在C中重新定义常数

时间:2011-11-16 21:52:57

标签: c

如果我在头文件中定义了一个常量:

#define MY_CONSTANT 1

我在整个项目中包含了一个库,其中包含对同一个常量的不同定义:

#define MY_CONSTANT 0

编译时我自然会遇到冲突。假设我无法改变我的项目代码并且我只能更改我的库代码,我可以做些什么来制作我的lib定义的MY_CONSTANT?

编辑: 为了澄清,我的目标是通过库更新代码中的常量。因为我正在编写一个库来模拟硬件功能,所以我必须遵循软件本身必须不受影响的规则。主文件中有一个使用常量的循环。我需要更改此常量,但不要在主文件中实际更改它。

3 个答案:

答案 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 :( */