結構體零長數組的妙用及warning C4200:使用了非標準擴展:結構/聯合中的零大小數組解決

// 零長數組:用於結構體的末尾,本身不佔用空間,因此對sizeof沒有影響,但有利於實現可變程度的數組

// 如果有點編譯器不支持,爲了通用型,可以換成1長數組 

結構體

 struct  m

                  {

                     short x,max;

                     int data[0]

                 }

以上結構體在VC2010編譯器下產生如下報警:

warning C4200:使用了非標準擴展:結構/聯合中的零大小數組


改成

 struct  m

                  {

                     short x,max;

                     int data[1]

                 }

即可通過編譯。

使用方法

struct m *temp=(struct m*)malloc(sizeof(struct m)+100); 

int i;

for(i=0;i<100;i++)

{

printf("%d -%d\n",i,temp->data[i]);

}

free(temp);


發佈了47 篇原創文章 · 獲贊 15 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章