我有在C99編譯好一個簡單的C程序,但在ANSI它抱怨:ANSI C抱怨數組初始化
各地初始化缺少大括號
的違規行爲:
int myarr[3][3]={0};
ANSI C爲什麼抱怨?我看到一個帖子說要增加額外的{}周圍的{0}但是這是沒有意義的我...
(我在編譯CentOS的情況下,它事項)
我有在C99編譯好一個簡單的C程序,但在ANSI它抱怨:ANSI C抱怨數組初始化
各地初始化缺少大括號
的違規行爲:
int myarr[3][3]={0};
ANSI C爲什麼抱怨?我看到一個帖子說要增加額外的{}周圍的{0}但是這是沒有意義的我...
(我在編譯CentOS的情況下,它事項)
嚴格(在ANSI C下)如果要初始化多維數組,則應該使用額外的大括號。例如,如果將每個元素初始化爲特定值,則可以執行以下操作:
int myarr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
也許最好添加它們,但C不需要你在這裏添加內括號。見C99中的6.7.8p26。 – ouah
int myarr[3][3]={0};
這是完全有效的C,在這種情況下,警告只是編譯器的一個指示。
如果你想擺脫的警告,你可以這樣做:
int myarr[3][3]={{0}};
或還加-Wno-missing-braces
如果您正在使用gcc
與-Wall
選項。
行了。我的老師不需要其他編譯器選項,所以我必須添加額外的大括號。 – TSG
爲什麼要添加另一組大括號不直觀?它是一個2D數組,每個維度有一組大括號?... – ApproachingDarknessFish