gpt4 book ai didi

gcc - 编译错误: Redefinition of union name

转载 作者:行者123 更新时间:2023-12-02 10:42:15 32 4
gpt4 key购买 nike

我在这里有这段代码,并且出现了GCC错误:在此代码的开头重新定义了union semun。

union semun {
int val; /* Value for SETVAL */
struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */
unsigned short *array; /* Array for GETALL, SETALL */
struct seminfo *__buf; /* Buffer for IPC_INFO
};

该程序是关于与互斥进行通信的。我不认为这与程序的其他部分有关,因为错误出现在程序的第一行,并且此代码位于程序的开头,因此不在程序的主要部分之外,因此之前没有任何其他的联合声明。 (之后)。谢谢

最佳答案

与X/Open相反,某些平台在其 header 中定义了union semun(特别是在sys/sem.h中)。

您可以使用适当的平台标识符宏进行相应的检查:

#if (defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)) \
|| defined(__FreeBSD__) || ...
/* union semun is defined by including <sys/sem.h> */
#else
union semun {
// ...
};
#endif

如果您的软件包具有元制作系统(配置,CMake等),则可以在配置阶段检查 union semun的存在,而不是依赖于平台检查。

关于gcc - 编译错误: Redefinition of union name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695859/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com