`通过-D选项定义宏总是等同于#define MACRO(优先级除外)

时间:2013-05-03 10:36:23

标签: macros makefile

我有第三方代码,当我通过Makefile添加宏时,其工作方式会有所不同,例如-DMacro而不是在顶级标头文件中执行#define MACRO (正如他们的文档所暗示的那样包含在所有文件中)。

我用谷歌搜索,如果以不同的方式定义它有任何不同,但除了Precedence of -D MACRO and #define MACRO之外不能提出太多。

我想知道在开始调试和确定问题之前,我是否遗漏了关于make documentation / C标准的任何内容。

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

通常,它完全相同,但make和ISO标准都没有任何关于它的说法。这取决于编译器本身,有些甚至可能 -D选项。

make,只需运行命令(例如gcc),无论选择何种选项。 ISO没有指定关于如何运行编译器的任何,只是编译器(及其创建的东西)的行为方式。

对于gcc,可以找到预处理器选项here,因此它看起来 #define相同。