我有第三方代码,当我通过Makefile
添加宏时,其工作方式会有所不同,例如-DMacro
而不是在顶级标头文件中执行#define MACRO
(正如他们的文档所暗示的那样包含在所有文件中)。
我用谷歌搜索,如果以不同的方式定义它有任何不同,但除了Precedence of -D MACRO and #define MACRO之外不能提出太多。
我想知道在开始调试和确定问题之前,我是否遗漏了关于make documentation / C标准的任何内容。
感谢您的回答。
答案 0 :(得分:2)
通常,它完全相同,但make
和ISO标准都没有任何关于它的说法。这取决于编译器本身,有些甚至可能 -D
选项。
到make
,只需运行命令(例如gcc
),无论选择何种选项。 ISO没有指定关于如何运行编译器的任何,只是编译器(及其创建的东西)的行为方式。
对于gcc
,可以找到预处理器选项here,因此它看起来 与#define
相同。