可變大小的陣列:GCC 擴充
C 標準規定陣列的大小在宣告時必須是常數整數。然而,這個問題引發了令人驚訝的觀察,即使用非常量變數作為數組大小的程式碼片段在 GCC 中成功編譯。
GCC 擴展
GCC 引入標準的擴展,允許使用非常量變數來表示數組大小。正如《C 程式語言》中引用的部分所述,標準不支援這一點。
驚喜
問題中的程式碼片段宣告了一個陣列 v1 和一個採用整數參數(表示陣列大小)的函數 f。當給 f 中的 v2 賦值時,GCC 允許這種非標準行為。
意義
雖然 GCC 允許這種擴展,但需要注意的是,不是 C 標準的一部分。使用它可能會導致其他不支援擴充的編譯器或系統出現可移植性問題。
強制執行和警告
編譯器可以透過 -pedantic 等選項強制執行標準。使用此選項,GCC 將在遇到非標準結構(例如可變大小數組)時發出警告。同樣,指定 -std=c 98 會使此構造出錯。
結論
GCC 的擴展允許聲明可變大小的數組,但至關重要的是請注意,這不是 C 標準的一部分。為了可移植性和遵守標準,建議使用常數數組大小。
以上是GCC 編譯器可以在 C 中使用可變大小的陣列嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!