Přehled deklarací
"Prohlášení" Určuje výkladu a atributy sada identifikátorů.Prohlášení, že úložiště, které má být rezervováno pro objekt nebo funkce s názvem podle identifikátoru také způsobí, že se nazývá "definition". C deklarace proměnné, funkce a typy mají tuto syntaxi:
Syntaxe
declaration:
declaration-specifiersattribute-seqoptinit-declarator-listopt**;**/* atribut sekvenceopt je Microsoft konkrétní * /
specifikátory-deklarace:
storage-class-specifier declaration-specifiersoptspecifikátor-typu specifikátory-deklarace vol.
kvalifikátor-typu specifikátory-deklarace vol.
Init deklarátor seznamu:
Init deklarátorInit deklarátor seznamu , init deklarátor
Init deklarátor:
deklarátordeklarátor = inicializátoru
[!POZNÁMKA]
Tuto syntaxi pro declaration neopakuje v následujících částech.Syntaxe v následujících částech obvykle začíná declarator nonterminal.
Ve deklarace init deklarátor seznamu obsahovat identifikátory probíhá s názvem; init je zkratka pro inicializátoru.Init deklarátor seznamu je posloupnost declarators, z nichž každá může mít informace o dalších typu, nebo inicializátoru nebo obojí oddělených čárkami.declarator Obsahuje identifikátory, pokud existuje, byl deklarován.Prohlášení specifikátory nonterminal se skládá z posloupnost specifikátory typu a třídy úložiště, které mohou ukazovat navázání, trvání úložiště, a alespoň část typu entity, které označují declarators.Proto deklarací vytvořené kombinaci specifikátory třídy úložiště, typ specifikátory, typ kvalifikátory, declarators a inicializátory.
Prohlášení může obsahovat jednu nebo více z volitelných atributů uvedenými v atribut sekvence; sekvence je zkratka pro sekvence.Tyto atributy specifické pro společnost Microsoft provádějí celou řadu funkcí, které jsou detailně v celé této knize.
Ve formuláři Obecné v deklaraci proměnné specifikátor typu přiřadí datový typ proměnné.Specifikátor typu může být složeného, jako když změnil typ konstantní nebo volatile.declarator Poskytuje název proměnné, případně upravit tak, aby deklarovat pole nebo ukazatele typu.Například
int const *fp;
deklaruje proměnnou s názvem fp jako ukazatel na nonmodifiable (konstantní) int hodnotu.V deklaraci můžete definovat více než jednu proměnnou s použitím více declarators, oddělených čárkami.
Prohlášení musí mít alespoň jeden deklarátor nebo jeho specifikátor typu, musí deklarovat struktury klíčové slovo, union klíčové slovo nebo členy výčtu.Declarators zadejte jakékoli zbývající informace o identifikátoru.Deklarátor je identifikátor, který lze upravit hranatých závorek ([]), hvězdičky (*), nebo závorky ( () ) v uvedeném pořadí deklarovat matice, ukazatel nebo typ funkce.Při deklaraci jednoduché proměnné (například znak, celé číslo a s plovoucí desetinnou čárkou položky), nebo struktury a sjednocení jednoduché proměnné declarator pouze identifikátor.Další informace o declarators naleznete v tématu Declarators a deklarace proměnných.
Všechny definice nejsou implicitně prohlášení, ale ne všechny deklarace jsou definice.Můžete například deklarace proměnných, které začínají extern Specifikátory paměťových tříd "odkazují na," a "definování" prohlášení.Pokud proměnná externí je možné odkazovat na dříve, než je definován, nebo pokud je definována v jiném zdrojovém souboru z jednoho where se používá extern prohlášení, je nezbytné.Úložiště není přidělené "odkazující" prohlášení ani lze proměnné inicializovat v prohlášeních.
V deklarace proměnných, které je třeba zadat úložiště třídy nebo typu (nebo obojí).S výjimkou __declspec, je povolen pouze jeden třída úložiště specifikátor v deklaraci a ne všechny třídy úložiště specifikátory nejsou povoleny v každém kontextu.__declspec Třída úložiště je povolen s dalšími specifikátory třídy úložiště, a je povoleno více než jednou.Specifikátory paměťových tříd prohlášení ovlivňuje způsob deklarovaného položka je uložen a inicializován a které části programu můžete odkazovat položku.
Specifikátory úložiště tříd zahrnují terminály definované v C automaticky, extern, zaregistrovat, statické, a typedef.Kromě toho zahrnuje Microsoft C specifikátory úložiště tříd Terminálové __declspec.Všechny specifikátory úložiště tříd terminály s výjimkou typedef a __declspec jsou uvedeny v třídy úložiště.Podívejte se na téma definice typu deklarace informace o typedef.Podívejte se na téma rozšířené atributy třídy úložiště informace o __declspec.
Umístění prohlášení ve zdrojové aplikaci a přítomnost nebo nepřítomnost jiných deklarace proměnné jsou důležité faktory při určování životnost proměnné.Může existovat více redeclarations, ale pouze jedna definice.Definice lze však zobrazí ve více než jednu jednotku překladu.Pro objekty s interní navázání toto pravidlo aplikuje samostatně ke každé jednotce překlad vzhledem k tomu, že jsou jedinečné pro překlad jednotka interně propojené objekty.Pro objekty s externí navázání toto pravidlo platí pro celou aplikaci.Podívejte se na téma životnost, oboru, viditelnost a navázání Další informace o viditelnost.
Typ specifikátory obsahují některé informace o datové typy identifikátory.Specifikátor typu výchozí hodnota je int.Další informace naleznete v tématu typu specifikátory.Typ specifikátory také můžete zadat typ značky, struktury a názvy union komponent a konstanty výčtu.Další informace naleznete v prohlášení výčet, struktury prohlášení, a Union prohlášení.
Existují dvě typu kvalifikátor terminály: konstantní a volatile.Tyto kvalifikátory určit další vlastnosti typů, které se týkají pouze v případě, že přístup k objekty daného typu prostřednictvím l hodnoty.Další informace o konstantní a volatile, naleznete v části typu kvalifikátory.Definici hodnot l naleznete v tématu L hodnota a hodnota r výrazy.