当前位置: 技术问答>linux和unix
如何用gcc编译时使文件中的一个宏不起作用!
来源: 互联网 发布时间:2016-05-24
本文导语: 想使所有文件中的一个宏不起作用, 因为文件太多了,所以不想大量的修改文件,记得好像Gcc 编译选项中有类似的功能,可是查了查有这么几个: -Dmacro 相当于C语言中的#define macro -Dmacro=defn 相当...
想使所有文件中的一个宏不起作用, 因为文件太多了,所以不想大量的修改文件,记得好像Gcc 编译选项中有类似的功能,可是查了查有这么几个:
-Dmacro 相当于C语言中的#define macro
-Dmacro=defn 相当于C语言中的#define macro=defn
-Umacro 相当于C语言中的#undef macro -undef 取消对任何非标准宏的定义
那么如果用-UFED 这个编译选项的话,那么是不是就是禁止了FED这个宏呢?
-Dmacro 相当于C语言中的#define macro
-Dmacro=defn 相当于C语言中的#define macro=defn
-Umacro 相当于C语言中的#undef macro -undef 取消对任何非标准宏的定义
那么如果用-UFED 这个编译选项的话,那么是不是就是禁止了FED这个宏呢?
|
用grep+sed在命令行中或者写个脚本文件可不可以把所有的都替换过来?
|
应该是-U把
$man gcc
...
-D and -U options are processed in the order they are given on the command
line. All -imacros file and -include file options are processed after all -D
and -U options.
-U name
Cancel any previous definition of name, either built in or provided with a -D
option.
...
$man gcc
...
-D and -U options are processed in the order they are given on the command
line. All -imacros file and -include file options are processed after all -D
and -U options.
-U name
Cancel any previous definition of name, either built in or provided with a -D
option.
...
|
楼上正解, 用 sed
|
呵呵,兄弟我教你个超简单的方法!
你整体替换整个工程中的这样的语句:
#define TEST
然后替换成
#define NOTEST
然后,所有这样的语句就都骗过去了:
#ifdef TEST
other statements;
#endif
你整体替换整个工程中的这样的语句:
#define TEST
然后替换成
#define NOTEST
然后,所有这样的语句就都骗过去了:
#ifdef TEST
other statements;
#endif
|
makefile里应该有这样的功能吧,你不是很多文件吗?
能到是gcc 一个一个编译
能到是gcc 一个一个编译
|
关注
|
没用过
帮顶
帮顶
|
对写在源码里的 define,看起来 gcc 命令行是没有办法 undef 的
|
若是不用,写在文件里干嘛
|
能不能把源代码落下啦,然后用Source Insight改完了,再传上去