2012-05-15 102 views
-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 ; 

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

+7

我刚刚粘贴你的代码到测试文件并没有错误编译.. – jimpic

+0

请粘贴一个最小的可编译源代码。还包括您从编译器看到的确切错误消息。 – jweyrich

+1

不,问题不在于你的结构,它可能是你的代码,你如何试图使用它们,但是你什么也没有显示。 struct(甚至是anopnymous)成员名称不会相互冲突。 – ShinTakezou

回答

3

这些标识符已经被用来在DIS码

结构字段是在不同的命名空间 - 不能是问题所在。甚至可以使用与字段名称相同的全局变量。我发现C FAQ是对这个问题很清楚:

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

  • 标签(即转到目标);
  • 标签(结构,工会和枚举的名称;即使他们理论上可以是这三个不是分开的);
  • 结构/联盟成员(每个结构或联盟的一个名称空间);
  • 一切(函数,变量,typedef名称,枚举常量),被称为``普通标识符'由标准
相关问题