5
考虑这段代码C中的结构和函数范围有什么区别?
int main(void)
{
typedef struct {
int i;
} s;
struct {
s s;
} t;
return 0;
}
它编译罚款。现在就来看看这一个
int main(void)
{
typedef struct {
int i;
} s;
s s;
return 0;
}
该代码将无法编译 -
‘s’ redeclared as different kind of symbol.
问题:为什么它有正确的“S秒;”作为一个结构内的声明,但不正确的定义在函数内?
+1其良好。你认为这件事会在C标准中提到吗? –
@ Mr.32是的,他们被提及。我认为它们实际上被称为标识符名称空间:*“每个结构或联合体的成员都有一个单独的名称 空间(用于通过。或 - >运算符访问 成员的表达式的类型消歧)”* (从1547年起) – user694733