Этапы преобразования

Программы на c и C++ состоит из одной или нескольких исходных файлов, каждая из которых содержит некоторые текстом программы.Файл источника, и включает файлы (файлы, включенные с помощью #include директива препроцессора), но не включая разделы кода удаленные рекомендации условный-компиляции как #ifвызывает ", следует единица измерения."

Исходные файлы могут быть переведены в разные моменты времени (в действительности, он общее для перевода только устаревшие файлы.Переведенные единиц перевода можно обрабатывать в отдельных объектные файлы и библиотеки объект-кода.Эти отдельные, переведенные единицы перевода затем связываются для формирования исполнительную программу или библиотеки динамической компоновки (DLL).Дополнительные сведения о файлах, которые можно использовать в качестве входных данных для компоновщика см. в разделе Входные LINK-файлы.

Единица преобразования могут взаимодействовать с использованием:

  • Вызовы функций, имеющих внешний переключателя.

  • Вызовы функций члена класса, имеющих внешний переключателя.

  • Направьте изменение объектов, имеющих внешний переключателя.

  • Направьте изменение файлов.

  • Межпроцессное взаимодействие (для приложений microsoft Windows).

В следующем списке описываются шаги, в которых компилятор преобразует файлы:

  • Сопоставление символов
    Символы в файле источника сопоставляются во внутреннее представление источника данных.Последовательности Триграф преобразованы к представлению единый-знака внутреннее на этом шаге.

  • Соединение линий
    Все линии, которая на обратной косой чертой (\) и следуют непосредственно за символом перевода строки соединения со следующей линией в файле источника формируя логически линии из физических линий.Если он не пуст, исходный файл должен завершиться в новой строки, не предшествует знак обратной косой чертой.

  • разметка
    Исходный файл разбит на токены и пробелы предварительной обработки.Комментарии в исходном файле, заменяются одним пробелом каждым.Символы новой строки сохраняются.

  • Предварительная обработка
    Директивы препроцессора, выполняются и макросы развернуты в исходный файл.#include выписка вызывает преобразование, начиная с 3 шагами, предшествующие перевода на любом включенном текста.

  • сопоставление кодировки
    Целый знак источника - заданы члены и escape-последовательности преобразованы в их эквивалентами в символе выполнения.Для microsoft c и C++, а также источник и символ выполнения - наборы ASCII.

  • Объединение строк
    Все соседние строковые литералы и широк-строки сцеплены.Например, "String " "concatenation" заменяется на "String concatenation".

  • Преобразование
    Все токены анализируются синтаксически и семантически; эти токены, преобразуются в объектный код.

  • связь
    Все внешние ссылки разрешены для создания исполнительная программы или библиотеки динамической компоновки.

Предупреждения или ошибки компилятора проблем во время действия перевода, в которых он обнаруживает синтаксические ошибки.

Компоновщик дает все внешние ссылки и создает исполнительная программы или библиотеки DLL путем объединения одного или нескольких отдельных, обработанных единиц перевода вместе с стандартными библиотеками.

См. также

Ссылки

Препроцессор