我一直被告知编译器足够聪明,可以消除死代码。我正在编写的大部分代码在编译时都有很多已知信息,但代码必须以最通用的形式编写。我不知道任何程序集,所以我无法检查生成的程序集。在最终的可执行文件中可以有效地消除什么样的代码?
几个例子但不限于
f(bool b){
if(b){
//some code
}else{
//some code
}
}
f(true);
//////////////////////////
template<bool b>
f(){
if(b){
//some code
}else{
//some code
}
}
f<true>();
///////////////////////////
如果定义f
在其他目标代码中并且被调用f(true)
在主代码中怎么办?链接时间优化会有效消除死代码吗?促进死代码消除的编码风格/编译器选项/技巧是什么?