Почему скомпилированные языки программирования (например, C++) настроены на создание множества объектных файлов, которые связаны друг с другом, а не один большой объект?
Например (написано на C++, может применяться к любому скомпилированному языку), рассмотрим два файла в проекте main.cpp
и auxiliary.cpp
. В чем разница между main.cpp
и auxiliary.cpp
, скомпилированными в main.o
и auxiliary.o
, а затем связанными с main.exe
, и main.cpp
с #include auxiliary.cpp
, скомпилированными только в main.o
и связанными с main.exe
? Насколько мне известно, они, по крайней мере, поверхностно дадут тот же результат.
Я вижу необходимость в нескольких объектах в случае многоязычных проектов, но не иначе. Дает ли несколько объектов компоновщику больше гибкости при создании исполняемого файла?
#include
исходный код будет находиться во многих файлах для пользователя, но будет выглядеть как один файл для компилятора. - person Brendon Boldt   schedule 19.06.2014