typedef struct_t struct_array[ROWS][COLS];
int main()
{
struct_array structArray1 = {0};
}
我收到一æ¡é”™è¯¯æ¶ˆæ¯ï¼Œè¯´åˆå§‹åŒ–程åºå‘¨å›´ç¼ºå°‘大括å·ã€‚我知é“有关于æ¤è¦å‘Šçš„gcc错误。或者我åšé”™äº†ä»€ä¹ˆï¼Ÿ
ç”案 0 :(得分:3)
您需è¦ä½¿ç”¨struct_array structArray1 = {{{0}}};
,第一个用于数组的第一维,第二个用于第二维,第三个用于结构åˆå§‹åŒ–。代ç 是æ£ç¡®çš„ï¼Œä½†ä½ çš„GCC是错误的,如其他ç”案所述。
ç”案 1 :(得分:2)
您的代ç 完全æ£ç¡®ã€‚ä½ ä¹Ÿæ˜¯å¯¹çš„ï¼ŒGCC也有一个错误 - it's described here。
æ‚¨æœ‰å‡ ä¸ªé€‰æ‹©ï¼š
æš‚æ—¶åœç”¨-Wmissing-braces
。
使用空的initalizer括å·ï¼ˆGCC扩展å):
struct_array structArray1 = {};
åˆå§‹åŒ–ä¸€ä¸ªå®Œæ•´çš„å¯¹è±¡ã€‚å¯¹äºŽä¸‰å…ƒç´ struct_t
,例如:
struct_array structArray1 = { { { 0, 0, 0 } } };
指定所有必è¦çš„大括å·å’Œé›¶ã€‚å‡è®¾ç»“构类型与上é¢çš„#3相åŒï¼Œå¹¶ä¸”是2x2数组:
struct_array structArray1 = { { { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 } },
{ { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 } } };
使用其他编译器。 clang,也许?
ä¿®å¤GCCä¸çš„错误。
ç”案 2 :(得分:1)
å°è¯•ï¼š
int main(){
struct_t structArray[ROWS][COLS];
memset(structArray, 0, sizeof(structArray));
}
(memset用零填充)