共用方式為


命名空間

編譯器會設定 「 命名空間"來區別針對不同種類的項目所使用的識別項。 每個命名空間中的名稱必須是唯一,若要避免衝突,但是相同的名稱可以出現在一個以上的命名空間。 這表示您可以使用相同的識別項的兩個或多個不同的項目,前提是在不同的命名空間中的項目。 編譯器可解析語法中程式的識別項的內容為基礎的參考。

注意事項注意事項

請勿混淆有限 c 與 C++ 的 「 命名空間 」 功能的命名空間的概念。請參閱命名空間 c+ + 語言參考如需詳細資訊。

這份清單將告訴您使用 c 的命名空間

  • 陳述式標籤
    具名的陳述式的標籤是陳述式的一部分。 定義陳述式標籤永遠後接冒號但不是屬於案例標籤。 使用的陳述式標籤永遠必須立即接在關鍵字goto。 陳述式的標籤並沒有與其他名稱或標籤的其他函式的名稱。

  • 結構、 等位,列舉型別標籤
    這些標記會屬於結構、 等位,列舉型別規範中,而且如果有的話,一定會立即接在保留的字struct, 等位,或enum。 標籤名稱必須不同於所有其他結構、 列舉型別或等位的標記,具有相同的可視性。

  • 結構或等位的成員
    成員名稱會配置在每個結構和等位型別相關聯的命名空間。 也就是相同的識別項可以是任意數量的結構或等位中的元件名稱,一次。 元件名稱的定義永遠口中結構或等位型別規範。 使用元件的名稱一律必須立即接在成員選取運算子 (->.). 成員名稱中必須是唯一的結構或等位,但它並沒有與其他的程式中,包含不同的結構和等位,成員名稱的名稱或結構本身的名稱。

  • 一般的識別項
    所有其他的名稱都屬於命名空間,其中包含變數、 函式 (包括型式參數和區域變數) 和列舉型別常數。 識別項名稱具有可視性而定,巢狀結構,因此您可以在區塊內重新定義它們。

  • Typedef 名稱
    Typedef 名稱不能與相同範圍中的識別項。

舉例來說,因為結構標記、 結構成員和變數名稱有三種不同的命名空間中,三個項目名稱student在這個範例不會衝突。 每個項目的內容可讓每個項目之正確解譯student在程式中。 (如結構的相關資訊,請參閱結構宣告。)

struct student {
   char student[20];
   int class;
   int id;
   } student;

當student後面出現struct關鍵字,編譯器會認為它為結構的標籤。 當student就會出現在 [成員選取運算子之後 (->.),為結構成員的參照的名稱。 在其他情況中, student結構變數的參考。 不過,多載化的標記名稱空間建議您不要因為它會遮住意義。

請參閱

概念

程式結構