C语言 如何使用编译器选项覆盖宏定义

ffscu2ro  于 2023-03-17  发布在  其他
关注(0)|答案(2)|浏览(205)

我想重新定义一个宏,但不修改头文件或源文件。
例如:#define macro_1 Present --是头文件中实际定义的内容
对于一组执行,我需要这个宏是一样的,但对于另一组执行,我需要宏被重新定义为'缺席'值这应该在不改变头文件的情况下完成。我使用ghs编译器。
我试过undef选项,但它没有有效的工作

xbp102n0

xbp102n01#

对于GCC或Clang,在命令行上定义宏的选项是-D
你需要在头文件中使用条件编译:

#ifndef macro_1
# define macro_1 "Present"
#endif

否则,将出现宏重定义错误。

rxztt3cl

rxztt3cl2#

如果代码不包含#ifndef macro_1或类似的内容,那么您所要求的内容在大多数编译器中是不可能实现的。
如果是这样的话,那就看看答案吧。某个程序员老兄。

相关问题