那些gcc选项在做什么?

时间:2011-11-27 09:37:20

标签: gcc

在我使用的makefile中,gcc与-D XOPEN_SOURCE=500 and -D_BSD_SOURCE选项一起使用。 gcc --help并没有告诉我这些是什么;快速谷歌搜索也没有帮助。我是gcc的新手,有人能给我一个暗示吗?

5 个答案:

答案 0 :(得分:4)

根据GCC文档("3.11 Options Controlling the Preprocessor"),-D开关使用值XOPEN_SOURCE和{{1}定义宏_BSD_SOURCE500 } 分别。就好像你在传递给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