簡體   English   中英

C 中標識符的命名空間

[英]Namespaces of identifiers in C

來自 (6.2.3/1) C99 標准

-- 結構、聯合和枚舉的標簽(通過跟在關鍵字 struct、union 或 enum 中的任何* 之后消除歧義);

*腳注:即使可以使用三個名稱空間,也只有一個標簽名稱空間。

現在,我知道在 C++ 中我們使用命名空間來避免實體的沖突,例如:

namespace foo {
     struct bar // ..define bar..
};

namespace foo2 {
     struct bar // ..define bar..
};

在 C 中,struct、union、enum 如何充當命名空間,腳注中只有一個命名空間而不是三個命名空間是什么意思?

結構體、聯合體和枚舉的標簽有一個單獨的命名空間,所以你可以有

struct foo {
    int bar;
};
double foo;

因為標簽的命名空間與標識符的命名空間是分開的。 標簽只有一個命名空間意味着你不能擁有

struct foo {
    int bar;
};
union foo {
    double baz;
    long quux;
}

在同一范圍內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM