首頁 > 後端開發 > C++ > 您可以在 C 中使用非常量變數來宣告陣列大小嗎?

您可以在 C 中使用非常量變數來宣告陣列大小嗎?

Linda Hamilton
發布: 2024-11-02 11:56:31
原創
953 人瀏覽過

Can You Use Non-Constant Variables to Declare Array Sizes in C  ?

帶有非常量變數的陣列大小宣告

與C 中陣列大小必須是常數整數的廣泛接受的概念相反,最近的觀察據透露,一些編譯器在這方面允許更大的靈活性。雖然 C 標準規定數組邊界必須是常數表達式,但 GCC 引入了一個擴展,允許在數組大小聲明中使用非常量變數。

考慮以下範例:

在標準 C 中,此程式碼會產生編譯器錯誤,因為 ArraySize 不是常數。然而,GCC 很高興地編譯它,沒有任何問題。

要理解這種行為,必須承認 GCC 的擴展與 C 標準的偏差。 Bjarne Stroustrup 的《C 程式語言》摘錄明確指出陣列邊界必須是常數表達式。

儘管如此,GCC 的擴展提供了一種在運行時動態分配數組的便捷方法。有人可能會說,這種靈活性是以可移植性為代價的,因為依賴 GCC 擴充功能的程式碼可能無法在其他相容的 C 編譯器上編譯。

如果可移植性是一個問題,GCC 提供了強制執行標準合規性的選項。在編譯期間傳遞 -pedantic 標誌會導致對非常量數組大小聲明發出警告,並且 -std=c 98 將其視為錯誤。這些選項優先考慮嚴格遵守 C 標準而不是運行時的便利性。

以上是您可以在 C 中使用非常量變數來宣告陣列大小嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板