mon*_*ing 43 macros gcc c-preprocessor
我如何在编译时使用gcc取消定义编译器宏.我尝试了一些编译args到gcc像-D但我无法看到"未定义"的消息.
谢谢
#include <iostream>
#define MYDEF
int main(){
#ifdef MYDEF
std::cout<<"defined\n";
#else
std::cout<<"not defined\n";
#endif
}
Run Code Online (Sandbox Code Playgroud)
dcp*_*dcp 50
您可以将-U选项与gcc一起使用,但它不会取消定义源代码中定义的宏.据我所知,没有办法做到这一点.
par*_*par 15
您应该将MYDEF定义包装在预处理器宏中,其存在(在命令行中定义)将阻止定义MYDEF.有点令人费解,但你可以从命令行(或Makefile)以你想要的方式控制构建.例:
#ifndef DONT_DEFINE_MYDEF
#define MYDEF
#endif
Run Code Online (Sandbox Code Playgroud)
当你不想要MYDEF时,从命令行:
gcc -DDONT_DEFINE_MYDEF ...
jld*_*ont 10
http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Preprocessor-Options.html#Preprocessor-Options
这些-U选项看起来就像你可能需要的那样...但是你再次无法覆盖源代码中包含的定义而不需要使用更多的预处理程序指令.
| 归档时间: |
|
| 查看次数: |
37569 次 |
| 最近记录: |