|
1
9
记住,既然你用的是宏,
扩展到:
然后,当你像其他方程一样计算这个时:
这是一个很好的例子,说明了为什么你不应该使用宏,除非它们是绝对必要的,或者你已经做了适当的注意,以确保像操作顺序错误这样的事情不会发生。正如@Barmar指出的那样,可以通过将宏展开以包含显式括号来纠正这种特殊情况:
这将导致评估结果不同,并给出正确答案:
|
|
|
Timo · 如果宏变量后跟构成有效标识符的字符,则不会展开宏变量 8 年前 |
|
|
user3623498 · 在#if中更改变量时出现问题 8 年前 |
|
|
einpoklum · 来自#cmakedefine替换的意外结果 8 年前 |
|
|
Joseph Franciscus · C中预处理器方法的别名++ 8 年前 |
|
|
stoper · 防止同一宏在多个转换单元中具有不同的定义 8 年前 |
|
|
СеÑгей · MinGW中预处理器g++的奇怪行为 8 年前 |