Sdílet prostřednictvím


Bod deklarace

Název je považován za deklarovaný okamžitě po jeho deklarátoru, ale před jeho (volitelným) inicializátorem. (Další informace o deklarátorech naleznete v tématu Deklarátory.) Enumerátor je považován za deklarovaný okamžitě po identifikátoru, který jej pojmenuje, ale před jeho (volitelným) inicializátorem.

Vezměme si jako příklad:

// point_of_declaration1.cpp
// compile with: /W1 
double dVar = 7.0;
int main()
{
   double dVar = dVar;   // C4700
}

Kdyby byl bod deklarace po inicializaci, pak by místní proměnná dVar byla inicializována na hodnotu 7.0, což je hodnota globální proměnné dVar.Nicméně, protože to není tento případ, je proměnná dVar inicializována na nedefinovanou hodnotu.

Enumerátory používají stejné pravidlo.Enumerátory jsou však vyexportovány do ohraničujícího rozsahu enumerátoru.V následujícím příkladu jsou deklarovány enumerátory Spades, Clubs, Hearts a Diamonds.Vzhledem k tomu, že jsou enumerátory vyexportovány do nadřazeného rozsahu, jsou považovány, že mají globální rozsah.Identifikátory v příkladu jsou již definovány v globálním rozsahu.

Uvažujme následující kód:

const int Spades = 1, Clubs = 2, Hearts = 3, Diamonds = 4;
enum Suits
{
    Spades = Spades,     // error
    Clubs,               // error
    Hearts,              // error
    Diamonds             // error
};

Vzhledem k tomu, že identifikátory v předchozím kódu jsou již definovány v globálním rozsahu, je vygenerována chybová zpráva.

[!POZNÁMKA]

Použití stejného názvu, který odkazuje na více než jeden prvek programu, například enumerátor a objekt, je považováno za špatný postup programování a je třeba se mu vyhnout.V předchozím příkladu tato praxe způsobí chybu.

Viz také

Referenční dokumentace

Rozsah