讓我們假設,我們已經有了一個類型:指針在結構內存分配在初始化(C99)
typedef struct __BUFF_T__
{
u_int8_t *buf;
u_int32_t size;
}buff_t;
是在C99是正確分配內存接下來呢?
buff_t a = {.size = 20,.buf = calloc(a.size,1)};
編譯器顯示警告
變量「數據」本身的初始設定中使用
內存可用和全時未初始化,但有一些其他非警告選項做一樣?
我認爲這個答案是錯誤的,特別是聲明:*,因爲你不知道字段將被初始化的順序*。 C說*初始化應該以初始化列表順序*出現。但是@ecatmur指出C還說,初始化列表表達式的*評估是相對於另一個而言被不確定地排序的*所以這就是爲什麼在這裏沒有指定它。 – ouah
@ouah謝謝,更新了我的答案。 –