有关Linux/POSIX中特定于平台的宏的文档

Nub*_*bok 4 c c++ linux macros posix

在Windows下使用Visual Studio(或尝试兼容的编译器)编译C/C++程序时,有一个预定义的宏_WIN32(来源:http://msdn.microsoft.com/en-us/library/b0084kay.aspx)您可以使用特定于平台的#ifdef-s.

我正在寻找的是一个Linux下的模拟器:一个宏告诉我,我正在为Linux /一个声称与(或多或少)POSIX兼容的操作系统进行编译.

所以我查看了gcc文档,发现了这个:http://gcc.gnu.org/onlinedocs/cpp/System_002dspecific-Predefined-Macros.html

应用于我的程序,以下宏(gcc 4.4.5 - Ubuntu 10.10)看起来很有前途(我希望我没有删除一个重要的宏):

#define __USE_BSD 1
#define __unix__ 1
#define __linux 1
#define __unix 1
#define __linux__ 1
#define _POSIX_SOURCE 1
#define __STDC_HOSTED__ 1
#define __STDC_IEC_559__ 1
#define __gnu_linux__ 1
#define __USE_SVID 1
#define __USE_XOPEN2K 1
#define __USE_POSIX199506 1
#define _G_USING_THUNKS 1
#define __USE_XOPEN2K8 1
#define _BSD_SOURCE 1
#define unix 1
#define linux 1
#define __USE_POSIX 1
#define __USE_POSIX199309 1
#define __SSP__ 1
#define _SVID_SOURCE 1
#define _G_HAVE_SYS_CDEFS 1
#define __USE_POSIX_IMPLICITLY 1
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到它们的详细文档 - 至于上面提到的Windows特定的宏?

另外,我对通常为其他POSIX兼容的操作系统定义的宏感兴趣,如*BSD等.

Fre*_*Foo 7

glibc的手册列出了几个这些宏,包括_POSIX_SOURCE.但是,它们的工作方式与您的预期不同:程序员定义这些宏(可能在构建脚本中),C库头检查它以启用或禁用某些功能.


Rol*_*lig 4

我曾经收集了 pkgsrc 使用的识别宏,这是一个跨平台的软件包系统:http ://www.netbsd.org/docs/pkgsrc/fixes.html#fixes.build.cpp

当时我没有找到任何权威来源。