|
15
|
| Commodore Jaeger · 技术社区 · 16 年前 |
|
|
1
10
好吧,我想得到一个答案: 不,没有正当理由。两者的计算结果总是为false,任何一个好的编译器都可能会将程序集中的第二个编译器转换为第一个编译器。如果说在某些情况下它是无效的,那么C已经存在了足够长的时间,以至于这个原因被比我更伟大的古鲁发现。
|
|
|
2
13
只是猜测一下为什么他们会建议使用
结束
我猜静态分析工具会抱怨
例如,我偶尔会遇到这样的情况:我希望有一个由常量控制的条件语句,但编译器会抱怨有一个关于条件表达式求值为常量的警告。然后我必须跳过一些障碍,让编译器停止抱怨(因为我不喜欢有虚假的警告)。
你的客户的建议是我用来消除这个警告的一个圈套,尽管在我的例子中,它并不能控制一个错误
但是,我使用的至少一个编译器发出了一个警告,警告表达式的计算结果总是为false。但是,如果我将其更改为:
警告消失了,大家都很高兴。我猜即使是你客户的静态分析工具也会是。请注意,我通常会在宏后面隐藏一点环跳,如:
能够告诉工具供应商解决问题可能是件好事,但在某些合法的情况下,他们确实希望诊断由常量布尔表达式控制的循环。更不用说,即使你说服了一个工具供应商做出这样的改变,这对你下一年的工作也没有帮助,因为你可能要花上一年左右的时间才能真正得到修复。 |
|
|
3
13
使用
编辑:自Visual Studio 2017 15.3以来,
|
|
|
Timo · 如果宏变量后跟构成有效标识符的字符,则不会展开宏变量 8 年前 |
|
|
user3623498 · 在#if中更改变量时出现问题 8 年前 |
|
|
einpoklum · 来自#cmakedefine替换的意外结果 8 年前 |
|
|
Joseph Franciscus · C中预处理器方法的别名++ 8 年前 |
|
|
stoper · 防止同一宏在多个转换单元中具有不同的定义 8 年前 |
|
|
СеÑгей · MinGW中预处理器g++的奇怪行为 8 年前 |