如果我在头文件中定义了一个常量:
#define MY_CONSTANT 1
我在整个项目中包含了一个库,其中包含对同一个常量的不同定义:
#define MY_CONSTANT 0
编译时我自然会遇到冲突。假设我无法改变我的项目代码并且我只能更改我的库代码,我可以做些什么来制作我的lib定义的MY_CONSTANT?
编辑: 为了澄清,我的目标是通过库更新代码中的常量。因为我正在编写一个库来模拟硬件功能,所以我必须遵循软件本身必须不受影响的规则。主文件中有一个使用常量的循环。我需要更改此常量,但不要在主文件中实际更改它。
答案 0 :(得分:4)
你可以#undef MY_CONSTANT
并重新定义你想要的价值,但这只是在惹麻烦。看看你是否可以完全修改设计,以免MY_CONSTANT
发生冲突。
答案 1 :(得分:4)
您可以取消定义其他定义
#ifdef MY_CONSTANT
#undef MY_CONSTANT
#endif
#define MYCONSTANT 0
此外,您应该删除=
和;
P.S。如上所述,它不会更改已编译的代码。
答案 2 :(得分:3)
Undef,redef,然后重新恢复
#ifdef MY_CONSTANT
#undef MY_CONSTANT
#endif
#define MY_CONSTANT 0
/* code here */
#undef MY_CONSTANT /* not needed if you don't need the library's definition*/
#include "library.h" /* file that originally defined it
might not work if include guards prevent it
in that case #undef LIBRARY_H
although that causes more trouble :( */