2013-08-05 23 views
0

我目前在學習C.我一直在玩弄typedef和結構,並遇到了一個奇怪的錯誤(至少對我沒有經驗的眼睛)。我使用typedef來創建維度類型(兩個值的int數組),並且我有一個使用該類型def的結構。初始化struct中的typedef字段的值 - C

當試圖在我的主指定的字段值,我碰到一個錯誤:

error: expected expression before ‘{’ token 

代碼:

typedef int dimensions[2]; 

struct television 
{ 
    dimensions resolution; 
}; 

int main() 
{ 
    struct television theTV; 
    theTV.resolution = {1024, 768}; 

    return 0; 
} 

這是一個很做作的例子 - 是有可能以這種方式初始化.resolution變量?

回答

3

使用,而不是:

struct television theTV = {{1024, 768}}; 

{}初始化列表只能在聲明中使用,不能在語句中使用。

2

您不允許使用賦值給數組,因爲它是不可修改的l值。但是,您可以使用memcpy()用複合字面常量:

memcpy(theTV.resolution, (dimensions){1024, 768}, sizeof(dimensions)); 
+0

+1,但我認爲你的意思是複合文字代替陣列字面 –

+0

@DavidRF:感謝您的指正! – jxh