Разве компилятор C++ не должен удалять мертвый код?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Разве компилятор C++ не должен удалять мертвый код?

Сообщение Anonymous »

Я слышал о термине «устранение мертвого кода» и предполагал, что именно это и должно происходить при компиляции программы. Я компилирую с помощью последней версии Visual Studio. У меня есть файл main.cpp, который связывает множество других вещей. С оптимизацией О2 получаю экзешник размером 4Мб. Я хотел увидеть причудливые инструменты анализа компилятора, которые он использует в процессе компиляции и компоновки для удаления «мертвого кода», поэтому я закомментировал все в main.cpp, кроме функции ввода int main(), и перекомпилировал, ну размер точно такой же, 4Мб. То есть в проводнике я вижу целую кучу библиотек и проектов, которые были сгенерированы и настроены для связывания с помощью CMake, так что в целом это большое решение, но файл, в котором определена моя точка входа int main(), закомментирован полностью и не вызывает никаких вызовов чего-либо еще, и все же размер исполняемого файла составляет 4 МБ, никакой разницы в размере. Это должно произойти или нет?

Код: Выделить всё

I noticed there are some other options like:

Favor Size or Speed: (set to neither)
Whole Program Optimization: (set to NO)
Это не должно иметь никакого влияния на устранение мертвого кода, верно? Это кажется странным, я имею в виду, что даже самый любительский программист должен быть в состоянии написать алгоритм, который отслеживает используемые программы, и должен иметь возможность видеть, что вызывается main, а затем ничего больше не вызывается во всем решении, и, следовательно, не включать это код в двоичном формате. Это неправильно, верно?
Посмотрю, создам ли я MRVC, хотя не уверен, что это будет легко.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -dead-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»