Препроцессинг: Обработка директив препроцессора (#include, #define, #ifdef и т.д.). Компиляция:
Какие этапы преобразования проходит код на C++?
Препроцессинг: Обработка директив препроцессора (#include, #define, #ifdef и т.д.). Компиляция:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
-
Препроцессинг: Обработка директив препроцессора (
#include,#define,#ifdefи т.д.). -
Компиляция:
- Лексический анализ (токенизация).
- Синтаксический анализ (парсинг).
- Семантический анализ.
- Генерация промежуточного представления.
- Оптимизация (при включении соответствующих флагов).
- Генерация объектного кода (ассемблерный код). Перевод ассемблерного кода в машинный код (
.objили.oфайл).
-
Сборка (линковка):
- Разрешение символов (связывание вызовов функций и обращений к переменным из разных объектных файлов и библиотек).
- Формирование исполняемого файла (
.exe,.elf,.dylibи т.п.) или библиотеки (.dll,.so,.dylib).