Этапы преобразования
Программы на c и C++ состоит из одной или нескольких исходных файлов, каждая из которых содержит некоторые текстом программы.Файл источника, и включает файлы (файлы, включенные с помощью #include директива препроцессора), но не включая разделы кода удаленные рекомендации условный-компиляции как #ifвызывает ", следует единица измерения."
Исходные файлы могут быть переведены в разные моменты времени (в действительности, он общее для перевода только устаревшие файлы.Переведенные единиц перевода можно обрабатывать в отдельных объектные файлы и библиотеки объект-кода.Эти отдельные, переведенные единицы перевода затем связываются для формирования исполнительную программу или библиотеки динамической компоновки (DLL).Дополнительные сведения о файлах, которые можно использовать в качестве входных данных для компоновщика см. в разделе Входные LINK-файлы.
Единица преобразования могут взаимодействовать с использованием:
Вызовы функций, имеющих внешний переключателя.
Вызовы функций члена класса, имеющих внешний переключателя.
Направьте изменение объектов, имеющих внешний переключателя.
Направьте изменение файлов.
Межпроцессное взаимодействие (для приложений microsoft Windows).
В следующем списке описываются шаги, в которых компилятор преобразует файлы:
Сопоставление символов
Символы в файле источника сопоставляются во внутреннее представление источника данных.Последовательности Триграф преобразованы к представлению единый-знака внутреннее на этом шаге.Соединение линий
Все линии, которая на обратной косой чертой (\) и следуют непосредственно за символом перевода строки соединения со следующей линией в файле источника формируя логически линии из физических линий.Если он не пуст, исходный файл должен завершиться в новой строки, не предшествует знак обратной косой чертой.разметка
Исходный файл разбит на токены и пробелы предварительной обработки.Комментарии в исходном файле, заменяются одним пробелом каждым.Символы новой строки сохраняются.Предварительная обработка
Директивы препроцессора, выполняются и макросы развернуты в исходный файл.#include выписка вызывает преобразование, начиная с 3 шагами, предшествующие перевода на любом включенном текста.сопоставление кодировки
Целый знак источника - заданы члены и escape-последовательности преобразованы в их эквивалентами в символе выполнения.Для microsoft c и C++, а также источник и символ выполнения - наборы ASCII.Объединение строк
Все соседние строковые литералы и широк-строки сцеплены.Например, "String " "concatenation" заменяется на "String concatenation".Преобразование
Все токены анализируются синтаксически и семантически; эти токены, преобразуются в объектный код.связь
Все внешние ссылки разрешены для создания исполнительная программы или библиотеки динамической компоновки.
Предупреждения или ошибки компилятора проблем во время действия перевода, в которых он обнаруживает синтаксические ошибки.
Компоновщик дает все внешние ссылки и создает исполнительная программы или библиотеки DLL путем объединения одного или нескольких отдельных, обработанных единиц перевода вместе с стандартными библиотеками.