在Makefile中使用'-D';是否在头文件中使用?

在Makefile中使用'-D';是否在头文件中使用?,makefile,g++,conditional-compilation,Makefile,G++,Conditional Compilation,我注意到在编译行(g++)上定义为-D_usome_flag=1的标志在头文件中使用时似乎没有预期的效果。ie:包含在\ifdef\uu SOME\u标志中的代码#endif,似乎未编译。我总是可以在标题中使用#define来实现这一点。但理想情况下,我希望能够在一个地方(即:Makefile)进行更改 我想知道我所尝试的是否可行 谢谢是的,这应该是可能的,-D标志正是为了实现这一点 请查收 从我在那里读到的内容来看,也许你应该使用-D symbol=value加空格,或者-D“symbol=v

我注意到在编译行(g++)上定义为-D_usome_flag=1的标志在头文件中使用时似乎没有预期的效果。ie:包含在
\ifdef\uu SOME\u标志中的代码#endif
,似乎未编译。我总是可以在标题中使用#define来实现这一点。但理想情况下,我希望能够在一个地方(即:Makefile)进行更改

我想知道我所尝试的是否可行


谢谢

是的,这应该是可能的,-D标志正是为了实现这一点

请查收

从我在那里读到的内容来看,也许你应该使用
-D symbol=value
加空格,或者
-D“symbol=value”
加引号。。但是,我没有尝试,因为我的笔记本电脑的电池现在快没电了:)

编辑:
抱歉,刚刚记住在linuxes上不应该有空格,所以您的命令行带有
-D_usome_FLAG=1
应该正确地将“u SOME_FLAG”设置为1。如果你不是在linux上,而是在windows上,你可以尝试使用空间,但我怀疑。此外,如果GCC是旧的或时髦的,它实际上可能会忽略-D之后的第一个字符,因此可以定义“\u SOME\u FLAG”。我已经看过好几次了,但只是在一些非常多车的港口


顺便说一句,也许是别的什么东西?或者,您可能忘记将该标志添加到所有文件的所有编译中了-D选项仅在当前编译的文件上使用,因此,如果在Makefile中有多个gcc调用,则可能只在其中一些调用中添加了该标志。这通常是我的问题,因为我倾向于只将-I和-D标志放在第一位,而忘记其他模块。

我认为问题可能是一些陈旧的文件。