我必须编写2个结构,如下所示:
typedef struct {
const char max ;
char *val ;
const char *charray ;
const char *entstate ;
const char *entindex ;
const char escstate ;
const char escindex ;
} choice ;
typedef struct {
const int min ;
const int max ;
int *val ;
const char entstate ;
const char entindex ;
const char escstate ;
const char escindex ;
} remote ;
但这显示错误,即某些变量,如escstate
,escindex
等。这些标识符已在此代码中使用。显示此错误是因为enstate
已在结构choice
中定义,并且已在结构remote
中再次定义。但我需要结构remote
中的所有这些变量。它的解决方案是什么?
答案 0 :(得分:3)
这些标识符已在dis代码中使用
结构字段位于不同的名称空间中 - 这不是问题所在。您甚至可以使用与字段相同的全局变量。我发现C FAQ在这个问题上非常明确:
有四种不同的命名空间:
- 标签(即转到目标);
- 标签(结构,联合和枚举的名称;即使它们理论上可能是这三个也不是分开的);
- 结构/联合成员(每个结构或联合一个名称空间);
- 其他一切(函数,变量,typedef名称,枚举常量),标准称为“普通标识符”