我正在使用K.N.King的《C编程:现代方法》学习C语言.引用这本书,
每个 struct 代表一个新的作用域;在该作用域中声明的任何名称都不会与程序中的其他名称冲突.(在C术语中,我们说每个 struct 的成员都有单独的名称空间.)
我以前从来没有真正考虑过 struct 成员的标识符.但仔细想想,令人惊讶的是,使用与局部变量相同的标识符并不会隐藏其他标识符,尽管它应该隐藏其他标识符.
所以我看了一下C中的name space
,并阅读了C99标准文档.在6.2.3节中,该标准声明了 struct 成员的名称空间,如下所示.
struct 或联盟的成员;每个 struct 或联盟都有单独的名称 用于其成员的空间(通过用于访问 成员通过.或-&>运算符);
真正让我困扰的是each structure or union has a separate name space for its members
的含义.
我要求澄清C struct 和联合中成员的单独命名空间的概念.具体地说,每个 struct 或联合对其成员具有单独的名称空间的概念是否意味着(A)特定 struct 的每个变量都有自己的名称空间,或者(B)每个 struct (或联合)标记在定义时都有自己的名称空间?
例如,在创建像struct s var_a, var_b;
这样的 struct 变量时,我想了解每个变量(var_a
和var_b
)是否都有自己的名称空间.