10

我正在做一个项目,代码包含一个宏定义:

#define __USE_MISC

该代码没有使用它,所以我认为它有其他用途。

4

2 回答 2

13

__USE_MISC/usr/include/features.h在以下条件下定义:

#if defined _BSD_SOURCE || defined _SVID_SOURCE
# define __USE_MISC     1
#endif

__USE_MISC --> 定义 BSD 和 System V Unix 共有的东西。

所以看起来你的代码想要确保它在任何情况下都被定义,即使两者_BSD_SOURCE_SVID_SOURCE没有被定义(从 glibc 2.20 开始,定义_DEFAULT_SOURCE使能__USE_MISC)。

有关详细信息,请参阅功能测试宏

于 2012-04-19T16:02:18.070 回答
5

__USE_MISC是实现的头文件如何处理“功能测试宏”的内部细节,它指导编译器应该使哪些标准函数集可用于构建。正如Thiruvalluvar 的回答_BSD_SOURCE所表明的那样,如果您的构建需要或_SVID_SOURCE配置 ,它由库头文件设置(供内部使用) 。

您的代码/构建不应直接处理该宏;相反,它应该使用记录在案的功能测试宏。glibc 的文档可以在这里找到:http ://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html

于 2012-04-19T19:05:30.307 回答