Мне всегда говорили, что компилятор достаточно умный, чтобы исключить мертвый код. Большая часть кода, который я пишу, имеет много информации, известную во время компиляции, но код должен быть написан в самой общей форме. Я не знаю сборки, поэтому я не могу проверить сгенерированную сборку. Какой код можно эффективно устранить в конечном исполняемом файле?Какой мертвый код может GCC устранить из окончательного вывода?
Несколько примеров, но не ограничиваясь
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)
в основном. Будет ли связывать оптимизацию времени эффективно устранять мертвый код? Что такое вариант/трюк стиля кодирования/компилятора для облегчения устранения мертвого кода?
Вы должны прочитать [Как я могу узнать, какие части кода никогда не используются?] (Http://stackoverflow.com/questions/4813947/how-can-i-know-which-parts-in-the- кода не-никогда используется /). –
@JesseGood Это полезно! Благодарю. Но мне не нужно знать, какой код мертв, я просто хочу убедиться, что они не скомпилированы в окончательный исполняемый файл. На самом деле я специально знаю, какая часть кода мертва по дизайну, когда я пишу код вызывающего абонента. – leon