我有一些定义宏 VALUE1 的代码。在部分代码中,我需要更改该值。
这是正确的方法吗?
#define VALUE1 123
...
#define VALUE1 345
...
// Reset the original value
#define VALUE1 123
编译器 (GCC) 给我一个关于重新定义的警告。
我有一些定义宏 VALUE1 的代码。在部分代码中,我需要更改该值。
这是正确的方法吗?
#define VALUE1 123
...
#define VALUE1 345
...
// Reset the original value
#define VALUE1 123
编译器 (GCC) 给我一个关于重新定义的警告。
它会给您一个警告,因为大多数时候它是不需要的:您正在为现有宏分配一个值,因为您不知道它存在。
当你必须这样做时,IMO 最好更明确(让预处理器知道这不是错误,并让人类读者也清楚):
#define VALUE 1
#undef VALUE
#define VALUE 2
#undef VALUE
#define VALUE 3
仅供参考,您甚至可以使用禁用该警告, #pragma GCC diagnostic ignored
但即使在这种情况下,您最好写一些东西来解释原因。
这就是说你可能会考虑审查你的设计,如果没有关于你的代码(或你想要实现的目标)的更多信息,我不能说更好,但如果你需要这样的技巧,那么一点重构可能会让一切变得更加清晰。