__USE_MISC宏用于什么?

时间:2012-04-19 15:50:07

标签: c

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

#define __USE_MISC

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

3 个答案:

答案 0 :(得分:9)

__ 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启用{{1 }})。

有关详细信息,请参阅feature test macros

答案 1 :(得分:3)

__USE_MISC是实现的标头如何处理“功能测试宏”的内部细节,它指导编译器应该为构建提供哪些标准函数集。如Thiruvalluvar's answer所示,如果您的构建需要_BSD_SOURCE_SVID_SOURCE配置,则库头设置(供内部使用)。

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

答案 2 :(得分:0)

这可能意味着要切换一些条件代码。例如这样的代码:

#ifdef __USE_MISC
  DoSomething();
#endif

会受到#define的影响。如果您的代码不再引用__USE_MISC,那么可能它是残留的。