gpt4 book ai didi

makefile - 使用 '-D' 在 Makefile 中定义的标志可以在头文件中使用吗?

转载 作者:行者123 更新时间:2023-12-02 21:47:52 24 4
gpt4 key购买 nike

我注意到我在编译行(g++)上定义为 -D__SOME_FLAG=1 的标志在头文件中使用时似乎没有达到预期的效果。即:包含在 #ifdef __SOME_FLAG ... #endif 中的代码似乎没有被编译。我总是可以在标题中使用 #define 来完成这项工作。但理想情况下,我希望能够在一处进行更改(即:Makefile)。

我想知道我正在尝试的事情是否可行?

谢谢

最佳答案

是的,这应该是可能的,并且 -D 标志正是用于此目的。

请查看http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options

根据我在那里读到的内容,也许您应该使用 -D symbol=value ,它们之间有一个空格,或者 -D"symbol=value" 带引号。但我没有尝试,因为我的笔记本电脑电池目前快没电了:)

编辑:
抱歉,只是记得在 Linux 上不应该有空格,因此您的命令行 -D__SOME_FLAG=1 应该正确地将“__SOME_FLAG”设置为 1。如果您不是在 Linux 上而是在 Windows 上,您可以尝试有空间,但我怀疑。另外,如果 GCC 是旧的或时髦的,它实际上可能会忽略 -D 之后的第一个字符,因此可以定义“_SOME_FLAG”来代替。我见过几次,但只在一些有问题的端口上见过。

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

关于makefile - 使用 '-D' 在 Makefile 中定义的标志可以在头文件中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com