Я слышал о термине «устранение мертвого кода» и предполагал, что именно это и должно происходить при компиляции программы. Я компилирую с помощью последней версии 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