2011-01-31 86 views
1

我不確定如何在C中聲明全局聯合。下面是我的代碼(全部都在main之外)。在C中聲明全局工會

typedef union{ 
    int iVal; 
    char* cVal; 
} DictVal; 
struct DictEntry{ 
    struct DictEntry* next; 
    char* key; 
    DictVal val; 

    int cTag; 
}; 

DictVal find(char* key); 

int main() 
{ 
    struct DictEntry dictionary[101]; 
    //printf("Hello"); 
} 

DictValue find(char* key) 
{ 
    DictVal a; 
    a.iVal = 3; 
    return a; 
} 

有了這個,我收到錯誤:

test.c:35: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘find’. 

我怎樣才能宣佈聯合的方式,我可以用它作爲返回類型爲函數?

預先感謝您! Andrew

+0

不應該是 typedef union DictVal int int iVal; char * cVal; } DictVal; ? – blueberryfields 2011-01-31 04:08:39

+2

你確定嗎?單獨的代碼片段編譯得很好。 – ephemient 2011-01-31 04:09:29

回答

5

您輸入錯了。

有一個DictVal typedef,但您試圖在定義上使用DictValue

2

拼寫錯誤。

您宣佈:

typedef union{ 
    int iVal; 
    char* cVal; 
} DictVal; 

,但要使用

DictValue find(char* key) 
{ 
    DictVal a; 

與DictVal更換DictValue。

也使主返回的東西。通常應該是0.

上帝保佑!