是' if(CONSTANT) {..} '在C/ c++中优化
Is `if(CONSTANT) { ... }` optimized in C/C++?
现代编译器是否优化像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) .. else
或if (1) .. else
的死代码即使在-O0
中也被优化了。
相关文章:
- 空基优化子对象的地址
- 关闭||运算符优化
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 返回值优化:显式移动还是隐式
- 人脸跟踪arduino代码的优化
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 纯函数,为什么没有优化
- 为什么大多数 pair 实现默认不使用压缩(空基优化)?
- 如何以优化的方式同时迭代两个间距不相等的数组
- 小字符串优化(调试与发布模式)
- 浮点定向舍入和优化
- Visual Studio 调试优化如何工作?
- 为什么开关的优化方式与 c/c++ 中的链接不同?
- 线性优化目标函数中的绝对值
- GCC 会优化内联访问器吗?
- gcc 如何优化此循环?
- 如何防止 CUDA-GDB 中的<优化输出>值
- 为什么我的程序在 O0 和 O2 的优化级别返回不同的结果
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- 使用 std::p air 进行返回值优化