Zdrojové soubory a zdrojové programy
Zdrojový program lze rozdělit do jednoho nebo více "zdrojových souborů" nebo "jednotek překladu". Vstup kompilátoru se nazývá "jednotka překladu".
Syntaxe
translation-unit
:
external-declaration
translation-unit
external-declaration
external-declaration
:
function-definition
declaration
Přehled deklarací poskytuje syntaxi pro declaration
nonterminal a Referenční informace preprocesoru vysvětlují, jak se jednotka překladu zpracovává.
Poznámka:
Vysvětlení konvencí syntaxe ANSI najdete v úvodu do souhrnu syntaxe jazyka C.
Součásti jednotky převodu jsou externí deklarace obsahující definice funkcí a deklarace identifikátorů. Tyto deklarace a definice mohou být umístěny ve zdrojových souborech, v souborech hlaviček, v knihovnách i v jiných souborech, které program potřebuje. Pro sestavení programu je zapotřebí každou jednotku převodu zkompilovat a propojit výsledné soubory objektů.
„Zdrojový program“ jazyka C je kolekcí obecných direktiv, direktiv pragma, deklarací, definicí, bloků příkazů a funkcí. Aby tyto položky byly platnými komponentami programu jazyka Microsoft C, musí být každá z nich zapsána syntaxí popsanou v této knize, přestože se mohou v programu vyskytovat v libovolném pořadí (dle pravidel uvedených v této knize). Umístění těchto komponent v programu ovlivňuje, jak v programu mohou být používány proměnné a funkce. Další informace najdete v tématu Životnost, Rozsah, Viditelnost a Propojení.
Zdrojové soubory nemusí obsahovat spustitelné příkazy. Může být například užitečné umístit definice proměnných do jednoho zdrojového souboru, a potom deklarovat reference na tyto proměnné v jiných zdrojových souborech, které je používají. Tato technika usnadňuje hledání a v případě potřeby také aktualizace definic. Ze stejného důvodu jsou konstanty a makra často uspořádány do samostatných souborů zvaných „vložené soubory“ nebo „soubory hlaviček“, na které lze dle potřeby odkázat ve zdrojových souborech. Informace o makrech a souborech zahrnutí najdete v referenčních informacích k preprocesoru.