是' if(CONSTANT) {..} '在C/ c++中优化

Is `if(CONSTANT) { ... }` optimized in C/C++?

本文关键字:c++ 优化 if CONSTANT      更新时间:2023-10-16

现代编译器是否优化像if(CONSTANT) { ... }这样的代码,其中CONSTANT是文字,模板参数,const变量或constexpr变量?他们是删除了整个if(0) { ... }表达式还是在if(1) { ... }中"抛出"if(1)部分?

这不能保证,但大多数高质量的编译器都会这样做。

C99在6.4.9中说:

if (0) {
 /* code to be excluded */
}

许多现代编译器不会为这个if语句生成代码。

例如,对于gcc(在C中),程序集转储显示if (0) .. elseif (1) .. else的死代码即使在-O0中也被优化了。