Sh4*_*4pe 10 c++ macros g++ c-preprocessor
我想从命令行覆盖一个宏.在我的源代码中,有一个这样的定义:
#define MY_FOO 1
Run Code Online (Sandbox Code Playgroud)
我想要的是在编译程序时设置此宏的值:
g++ -DMY_FOO=2 ...
Run Code Online (Sandbox Code Playgroud)
但是,宏源被源代码重新定义为旧值1.问题是我不拥有首先定义宏的源代码部分.如果它是我自己的代码,我可以简单地写
#ifndef MY_FOO
#define MY_FOO 1
#endif
Run Code Online (Sandbox Code Playgroud)
我的问题就不复存在了.那么是否可以使用g ++在命令行上指定一个宏,以便源代码无法重新定义它?
ugo*_*ren 10
你不能.
命令行在任何源文件和头文件之前处理.
如果源文件定义了宏,则之前不能定义它,并且从现在开始将获得新值.
改变它,唯一的办法就是#undef和#define它再次,在稍后的点.如果您可以访问定义后包含的标题,那么您有机会.
| 归档时间: |
|
| 查看次数: |
3510 次 |
| 最近记录: |