帶有非常量變數的陣列大小宣告
與C 中陣列大小必須是常數整數的廣泛接受的概念相反,最近的觀察據透露,一些編譯器在這方面允許更大的靈活性。雖然 C 標準規定數組邊界必須是常數表達式,但 GCC 引入了一個擴展,允許在數組大小聲明中使用非常量變數。
考慮以下範例:
在標準 C 中,此程式碼會產生編譯器錯誤,因為 ArraySize 不是常數。然而,GCC 很高興地編譯它,沒有任何問題。
要理解這種行為,必須承認 GCC 的擴展與 C 標準的偏差。 Bjarne Stroustrup 的《C 程式語言》摘錄明確指出陣列邊界必須是常數表達式。
儘管如此,GCC 的擴展提供了一種在運行時動態分配數組的便捷方法。有人可能會說,這種靈活性是以可移植性為代價的,因為依賴 GCC 擴充功能的程式碼可能無法在其他相容的 C 編譯器上編譯。
如果可移植性是一個問題,GCC 提供了強制執行標準合規性的選項。在編譯期間傳遞 -pedantic 標誌會導致對非常量數組大小聲明發出警告,並且 -std=c 98 將其視為錯誤。這些選項優先考慮嚴格遵守 C 標準而不是運行時的便利性。
以上是您可以在 C 中使用非常量變數來宣告陣列大小嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!