Etapów translacji
C i C++ programy składają się z plików źródłowych, z których każdy zawiera część tekstu program.Plik źródłowy, wraz z jej pliki nagłówkowe (pliki, które są uwzględnione, za pomocą #include dyrektywy preprocesora), ale nie włączając sekcje kodu, takie jak zmniejszyła się z dyrektyw warunkowych kompilacja #if, jest nazywany "jednostka tłumaczenia".
Pliki źródłowe można przetłumaczyć w różnym czasie — w rzeczywistości jest wspólne tłumaczyć tylko nieaktualne pliki.Jednostki tłumaczenie tłumaczone mogą być przetwarzane w oddzielnym obiektem pliki lub biblioteki kod obiektu.Jednostki te oddzielne, tłumaczone tłumaczenie połączonych program wykonywalny lub biblioteka dołączana dynamicznie (DLL).Aby uzyskać więcej informacji na temat plików, które mogą być używane jako dane wejściowe do łączący zobacz Pliki danych wejściowych łączy.
Tłumaczenie jednostki mogą komunikować się przy użyciu:
Wywołania funkcji, które mają powiązania zewnętrznych.
Wywołania funkcji Członkowskich klasy, które mają powiązania zewnętrznych.
Bezpośrednich modyfikacji obiektów, które mają powiązania zewnętrznych.
Bezpośrednich modyfikacji plików.
Komunikacji międzyprocesowej (Microsoft opartych na systemie Windows tylko dla aplikacji).
Na poniższej liście opisano faz, w których kompilator przetwarza pliki:
Mapowania znaków
Znaki w pliku źródłowym są mapowane do reprezentacji wewnętrznej źródła.Trigraf sekwencji są konwertowane do reprezentacji wewnętrznej pojedynczych znaków w tej fazie.Splatanie linii
Wszystkie wiersze, kończącym się znakiem odwrotnej kreski ukośnej (\) i natychmiast po niej przez dopasuje znak są przyłączane do następnego wiersza w pliku źródłowym, tworzących logiczne wiersze z fizycznego wierszy.O ile nie jest pusta, plik źródłowy musi kończyć się w znak nowego wiersza, który nie jest poprzedzony znakiem odwrotnej kreski ukośnej.Tokenization
Plik źródłowy jest dzielony na tokeny wstępnego przetwarzania i znaki spacji.Komentarze w pliku źródłowym są zastępowane z jednego miejsca na znak.Znaki nowego wiersza są zachowywane.Wstępne przetwarzanie
Wstępne przetwarzanie dyrektyw są wykonywane i makra są rozwinięte w pliku źródłowym.#include Instrukcji wywołuje tłumaczenia, począwszy od powyższych kroków trzy tłumaczenie w dowolnym polu tekstowym dołączone.Mapowania zestawu znaków
Członkami zestawu wszystkich znaków źródła i sekwencje unikowe są konwertowane na ich odpowiedniki w zestawie znaków wykonanie.Microsoft c i C++ zarówno źródło i wykonanie zestawy znaków są w formacie ASCII.Konkatenacji ciągów
Wszystkie sąsiadujące ciąg i literały ciągów znaków wide są łączone.Na przykład "String " "concatenation" staje się "String concatenation".Tłumaczenie
Wszystkie tokeny są analizowane syntaktycznie i semantycznie; Tokeny te są konwertowane na kod obiektu.Powiązania
Wszystkie odwołania zewnętrzne rozwiązane może utworzyć program wykonywalny lub biblioteka dołączana dynamicznie.
Kompilator generuje ostrzeżenia lub błędy podczas faz tłumaczenia, w którym napotka błędy składniowe.
Program łączący rozpoznaje wszystkie odwołania zewnętrzne i tworzy plik wykonywalny lub DLL poprzez łączenie jednego lub więcej przetwarzane oddzielnie tłumaczenia jednostek wraz z bibliotek standardowych.