-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。しかし、これらすべての変数が structure に必要ですremote。それに対する解決策は何ですか?

4

1 に答える 1

3

これらの識別子はすでにディスコードで使用されています

構造体フィールドは異なる名前空間にあります - それは問題にはなりません。フィールドと同じ名前のグローバル変数を使用することもできます。この件に関しては、C FAQが非常に明確であることがわかりました。

名前空間には、次の 4 種類があります。

  • ラベル (つまり、goto ターゲット);
  • タグ (構造、共用体、および列挙の名前。これら 3 つは、理論的には分離されている可能性がありますが、分離されていません)。
  • 構造体/共用体のメンバー (構造体または共用体ごとに 1 つの名前空間);
  • その他すべて (関数、変数、typedef 名、列挙定数)、標準では「通常の識別子」と呼ばれる
于 2012-05-15T05:33:11.730 に答える