GNU C Library特性测试宏Feature Test Macros

文档地址:https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html#Feature-Test-Macros

 

在源代码中使用特性测试宏控制编译出的程序所包含的特性

 

使用gcc -ansi编译出的程序只包含ISO C标准定义的一些特性

除非使用了其他的一些特性宏

See GNU CC Command Options, for more information about GCC options.

 

在源代码的最开始定义这些宏

在所有的#icnlude之前

 

可以使用GCC的-D选项定义这些宏

当然最好在各个源文件中按需定义

 

这些宏并不是用来检查程序是否严格遵循某一标准的,这不够充分

 

_POSIX_SOURCE

_POSIX_C_SOURCE

_BSD_SOURCE

_SVID_SOURCE

_XOPEN_SOURCE

_XOPEN_SOURCE_EXTENDED

_LARGEFILE_SOURCE

_LARGEFILE64_SOURCE

_FILE_OFFSET_BITS

_ISOC99_SOURCE

_GNU_SOURCE

定义这个宏会包括:ISO C89, ISO C99, POSIX.1, POSIX.2, BSD, SVID, X/Open, LFS, and GNU extensions.

POSIX.1和BSD冲突的地方,POSIX优先

_REENTRANT

_THREAD_SAFE

使用GNU C库中函数的多线程安全版本

 

建议在所有的新程序中使用_GNU_SOURCE

 

如果没有明确地使用-ansi的话

相当于

#define _POSIX_C_SOURCE 2

#define _POSIX_SOURCE

#define _SVID_SOURCE

#define _BSD_SOURCE 1

 

 

你可能感兴趣的:(c,library,feature,gnu)