Pie*_*tro 2 c++ macros gcc c-preprocessor
我有一些代码定义宏VALUE1.在代码的一部分中,我需要改变这个值.
这是正确的方法吗?
#define VALUE1 123
...
#define VALUE1 345
...
// Reset the original value
#define VALUE1 123
Run Code Online (Sandbox Code Playgroud)
编译器(GCC)给我一个关于重新定义的警告.
它会向您发出警告,因为大多数情况下它都是不需要的:您正在为现有宏分配值,因为您不知道它存在.
当你不得不这样做时,IMO要更加明确(让预处理器知道它不是一个错误并且让人类读者也清楚):
#define VALUE 1
#undef VALUE
#define VALUE 2
#undef VALUE
#define VALUE 3
Run Code Online (Sandbox Code Playgroud)
只是为了获取信息,您甚至可以禁用该警告, #pragma GCC diagnostic ignored但即使在这种情况下,您最好写一些东西来解释原因.
那说你可能会考虑审查你的设计,如果没有关于你的代码的更多信息(或你想要实现的目标),我不能说更好的东西,但是如果你需要这样的技巧,可能一点点的重构会让一切变得更加清晰.
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |