[英]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.