Фазы трансляции
Программа на C++ состоит из:
- одного или нескольких исходных файлов (с расширением .cpp);
- нуля и более заголовочных файлов (с расширением .h).
Каждый этих файлов содержит некоторую часть текста программы.
Трансляция включает в себя три фазы (см. рис. 2):
а) фаза препроцессирования. Каждый исходный файл вместе со включенным в него (с помощью директивы #include) текстом из заголовочных файлов образует так называемую единицу трансляции. Также обрабатываются другие директивы препроцессора;
б) фаза компиляции. Каждая единица трансляции преобразуется компилятором в объектный файл (с расширением .obj), который содержит машинный код и информацию для связывания с другими объектными файлами.
в) фаза компоновки. Объектные файлы объединяются в исполнимый модуль.
Рис.1. Трансляция программы на C++
Каждый исходный (.cpp) файл проходит две первые фазы независимо от остальных. Поэтому при изменении текста в одном .cpp-файле перекомпиляции требует только этот .cpp-файл. При изменении .h-файла перекомпиляция потребуется для всех .cpp-файлов, включающих его.