两个结构具有相同的变量

时间:2012-05-15 05:29:39

标签: c

我必须编写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 ;

但这显示错误,即某些变量,如escstateescindex等。这些标识符已在此代码中使用。显示此错误是因为enstate已在结构choice中定义,并且已在结构remote中再次定义。但我需要结构remote中的所有这些变量。它的解决方案是什么?

1 个答案:

答案 0 :(得分:3)

  

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

结构字段位于不同的名称空间中 - 这不是问题所在。您甚至可以使用与字段相同的全局变量。我发现C FAQ在这个问题上非常明确:

  

有四种不同的命名空间:

     
      
  • 标签(即转到目标);
  •   
  • 标签(结构,联合和枚举的名称;即使它们理论上可能是这三个也不是分开的);
  •   
  • 结构/联合成员(每个结构或联合一个名称空间);
  •   
  • 其他一切(函数,变量,typedef名称,枚举常量),标准称为“普通标识符”
  •