標準C/C++中不支援長度為0的array,
但GNU C允許這種宣告方式, 目的是為了access不定長度的結構體時,
可以節省空間與便利性.
範例, 宣告一個 demo struct如下:
struct demo_t { int a; char b[256]; char follow[0]; };
接著要在程式中使用這個 struct demo, 並在其後分配長度為LEN的char空間.
struct demo_t *demo = (struct demo_t *) malloc (sizeof(strcut demo_t) + LEN);
接著你就可以使用 demo->follow 來存取到這段空間.
另外一個作法是宣告為 char *follow, 但這樣在不定長度為 0 時則會多佔用一個 char 的 pointer.
當然要記得把這個變數放在結構體的最後面 >.0
沒有留言:
張貼留言