在我使用的makefile中,gcc与-D XOPEN_SOURCE=500 and -D_BSD_SOURCE
选项一起使用。 gcc --help
并没有告诉我这些是什么;快速谷歌搜索也没有帮助。我是gcc的新手,有人能给我一个暗示吗?
答案 0 :(得分:4)
根据GCC文档("3.11 Options Controlling the Preprocessor"),-D
开关使用值XOPEN_SOURCE
和{{1}定义宏_BSD_SOURCE
和500
} 分别。就好像你在传递给GCC的所有源文件的开头都有这个代码:
1
构建脚本通常利用编译器“插入”这些宏的能力来“与”目标平台的源代码详细信息“通信”(例如操作系统版本)。
#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1
的“对面”命令行开关为-D
,-U
为宏。
大多数(如果不是全部)现代C / C ++编译器都包含类似的开关。例如,Visual C ++编译器接受/D
compiler switch,它基本上与GCC的#undef
开关具有相同的用途。
如果您需要查找GCC编译器的编译器开关,the GCC option index以供将来参考。
答案 1 :(得分:2)
-D
用于设置定义。您编译的源代码最有可能是使用这些定义来包含特定的头文件。
将-D
视为同样的事情:
#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1
位于当前正在编译的文件的顶部。
答案 2 :(得分:1)
-D
设置了一个定义。这就像添加包含以下内容的头文件一样:
#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1
然后,您可以使用#ifdef _BSD_SOURCE
启用条件编译的某些部分。
答案 3 :(得分:1)
这对gcc来说并不算什么。这些定义与您在.c,.cpp或.h文件中的类似:
#define XOPEN_SOURCE 500
#define _BSD_SOURCE
答案 4 :(得分:1)
-D
是#define
即
#define XOPEN_SOURCE 500