2012-05-15 138 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名稱,枚舉常量),被稱爲``普通標識符'由標準
相關問題