在 C 中,在遺留程式碼中可能會遇到「零長度數組」的情況。這涉及包含長度為零的陣列的結構。雖然警告被編譯指示抑制,但創建包含此類數組的新結構可能會導致錯誤 2233。為什麼會發生這種情況,可以採取什麼措施來解決它?
使用零長度數組的原因是一個歷史原因允許動態分配數組的 C hack。開發人員不使用長度為 1 的陣列或指針,而是建立一個長度為零的陣列的結構。這將允許他們使用結構體的 nData 成員動態計算數組的大小。
為了修正這個問題,可以使用 C-Hack。可以建立函數 mallocSomeData 來動態分配指定長度的陣列:
struct someData* mallocSomeData(int size) { struct someData* result = (struct someData*)malloc(sizeof(struct someData) size * sizeof(BYTE)); if (result) { result->nData = size; } return result; }
透過此函數,可以建立一個someData的對象,並包含所需長度的數組,有效解決「零長度數組」問題。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3