Фазы трансляции

Программа на C++ состоит из:

- одного или нескольких исходных файлов (с расширением .cpp);

- нуля и более заголовочных файлов (с расширением .h).

Каждый этих файлов содержит некоторую часть текста программы.

Трансляция включает в себя три фазы (см. рис. 2):

а) фаза препроцессирования. Каждый исходный файл вместе со включенным в него (с помощью директивы #include) текстом из заголовочных файлов образует так называемую единицу трансляции. Также обрабатываются другие директивы препроцессора;

б) фаза компиляции. Каждая единица трансляции преобразуется компилятором в объектный файл (с расширением .obj), который содержит машинный код и информацию для связывания с другими объектными файлами.

в) фаза компоновки. Объектные файлы объединяются в исполнимый модуль.

 

Рис.1. Трансляция программы на C++

 

Каждый исходный (.cpp) файл проходит две первые фазы независимо от остальных. Поэтому при изменении текста в одном .cpp-файле перекомпиляции требует только этот .cpp-файл. При изменении .h-файла перекомпиляция потребуется для всех .cpp-файлов, включающих его.