我正在做一个项目,代码包含一个宏定义:
#define __USE_MISC
该代码没有使用它,所以我认为它有其他用途。
__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
)。
有关详细信息,请参阅功能测试宏。
__USE_MISC
是实现的头文件如何处理“功能测试宏”的内部细节,它指导编译器应该使哪些标准函数集可用于构建。正如Thiruvalluvar 的回答_BSD_SOURCE
所表明的那样,如果您的构建需要或_SVID_SOURCE
配置 ,它由库头文件设置(供内部使用) 。
您的代码/构建不应直接处理该宏;相反,它应该使用记录在案的功能测试宏。glibc 的文档可以在这里找到:http ://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html