共用方式為


執行點

名稱會視為在緊接著它的宣告子之後、但是在它的 (選擇性) 初始設定式之前宣告 (如需宣告子的詳細資訊,請參閱宣告子)。列舉程式會視為在緊接著為它命名的識別項之後、但是在它的 (選擇性) 初始設定式之前宣告。

請考量以下範例:

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

如果宣告的點是在初始化「之後」,則區域 dVar 會初始化為 7.0,也就是全域變數 dVar 的值。 不過,由於並不是這種情況,因此 dVar 會初始化為未定義的值。

列舉程式會遵循相同的規則。 不過,列舉程式會匯出至列舉的封閉範圍。 下列範例中會宣告列舉程式 Spades、Clubs、Hearts 和 Diamonds。 由於列舉程式會匯出至封閉範圍,因此會將它們視為具有全域範圍。 範例中的識別項已在全域範圍中定義。

請考慮下列程式碼:

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

由於上述程式碼中的識別項已在全域範圍中定義,因此會產生錯誤訊息。

注意事項注意事項

使用相同名稱參考多個程式項目 (例如,列舉程式和物件) 會視為不良的程式設計做法,應該加以避免。在上述範例中,這種做法會造成錯誤。

請參閱

參考

範圍