-4

我必须编写 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已在 structure 中定义choice,并且在 structure 中再次定义remote。但我需要结构中的所有这些变量remote。它的解决方案是什么?

4

1 回答 1

3

这些标识符已在 dis 代码中使用

结构字段位于不同的名称空间中 - 这不是问题。您甚至可以拥有与字段同名的全局变量。我发现C FAQ在这个主题上非常清楚:

有四种不同类型的命名空间,用于:

  • 标签(即转到目标);
  • 标签(结构、联合和枚举的名称;这三个不是分开的,即使它们理论上可以分开);
  • 结构/联合成员(每个结构或联合一个命名空间);
  • 其他一切(函数、变量、typedef 名称、枚举常量),被标准称为“普通标识符”
于 2012-05-15T05:33:11.730 回答