我在尝试从我的程序中移除未使用的代码 - 我现在不能删除代码,我只想先禁用它。
假设我有以下代码:
if (cond){
doSomething()
}
并且cond
永远为假,因此doSomething
从未被调用。
我想做的事情类似于:
#define REMOVE_UNUSED_CODE 0
if (cond && REMOVE_UNUSED_CODE){
doSomething()
}
现在对我们来说(希望编译器也是如此),这段代码已经没用了。
编译器会删除所有的if条件语句还是会留下来但永远不会执行呢?
附注:我不能使用#if 0来实现这个目的。
cond
将在运行时被评估,你如何期望在编译时就知道它呢? - SadiqueREMOVE_UNUSED_CODE
并在启用适当优化的情况下将死代码剔除。虽然不是很确定。 - Sourav Ghoshx && false == false
- 假设cond
可以轻松确定没有副作用。 - sepp2kif (REMOVE_UNUSED_CODE && cond)
,因为C语言中的布尔运算符总是短路求值,这样可以避免可能出现的cond
副作用。 - rodrigo