Sdílet prostřednictvím


Fáze překladu

C a C++ programy se skládá z jednoho nebo více zdrojových souborů, z nichž každý obsahuje část textu program.Zdrojový soubor, spolu s jeho zahrnout soubory (soubory, které jsou součástí pomocí #include direktivu preprocesoru), ale ne včetně části kódu, například odebrat podmíněné kompilace směrnicemi #if, se nazývá "překlad jednotky."

Zdrojové soubory lze přeložit v různých časech – ve skutečnosti je společné přeložit pouze zastaralé soubory.Přeložený překlad jednotek lze zpracovat do samostatného objektu soubory nebo kód objektu knihovny.Tyto jednotky samostatný, přeložený překlad pak propojen spustitelného programu nebo knihovnu (DLL).Další informace o souborech, které lze použít jako vstup do vytvořeném propojovacím viz PROPOJENÍ vstupní soubory.

Převod jednotek může komunikovat pomocí:

  • Volání funkcí, které mají externí propojení.

  • Volání třídy členské funkce, které mají externí propojení.

  • Přímou úpravu objektů, které mají externí propojení.

  • Přímou úpravu souborů.

  • Meziprocesové komunikace (pro Microsoft systém Windows pouze aplikace).

Následující seznam popisuje fáze, ve kterých kompilátor převádí soubory:

  • Mapování znaků
    Znaky ve zdrojovém souboru jsou mapovány na znázornění vnitřní zdroj.Trigraph sekvence jsou převedeny na vnitřní reprezentaci jednotlivých znaků v této fázi.

  • Splétání řádku
    Všechny řádky v zpětné lomítko (\) a ihned za znakem znak jsou spojeny s dalším řádkem ve zdrojovém souboru tvořící logické řádky z fyzických řádků.Pokud je prázdný, zdrojový soubor musí končit znakem, který nesmí předcházet zpětné lomítko.

  • Tokenization
    Zdrojový soubor je rozdělena do tokenů předzpracování a prázdné znaky.Komentáře ve zdrojovém souboru jsou nahrazeny místo jednoho znaku.Jsou zachovány znaky nového řádku.

  • Úpravě před zpracováním
    Předem zpracované direktivy jsou provedeny a makra jsou rozbaleny do zdrojového souboru.#include Příkaz vyvolá počínaje předcházející kroky tři překlad na libovolný text zahrnut překlad.

  • Mapování znakové sady
    Všechny zdroje znakové sady členů a sekvence escape, které jsou převedeny na jejich ekvivalenty ve znakové sadě spuštění.Microsoft c a C++ jsou zdroje a spuštění znakové sady ASCII.

  • Zřetězení
    Všechny sousedící řetězec a wide řetězcové literály jsou zřetězeny.Například "String " "concatenation" se změní na "String concatenation".

  • Překlad
    Všechny tokeny jsou analyzovány syntakticky a sémanticky; Tyto tokeny budou převedeny na kód objektu.

  • Navázání
    Externí odkazy jsou rozhodnuty vytvořit spustitelný program nebo knihovny DLL.

Kompilátor vydá varování a chyby během fáze překladu, ve kterém nalezne chyby syntaxe.

Vytvořeném propojovacím řeší všechny externí odkazy a vytvoří spustitelný program nebo DLL kombinací jedné nebo více samostatně zpracována překlad jednotek spolu se standardní knihovny.

Viz také

Referenční dokumentace

Preprocesor