首頁 > 後端開發 > C++ > GCC 在 Constexpr 上下文中對非 constexpr 標準函式庫函數的擴充處理是否符合 C 標準?

GCC 在 Constexpr 上下文中對非 constexpr 標準函式庫函數的擴充處理是否符合 C 標準?

Mary-Kate Olsen
發布: 2024-11-28 21:33:14
原創
884 人瀏覽過

Is GCC's Extensional Treatment of Non-constexpr Standard Library Functions in Constexpr Contexts Conforming to the C   Standard?

非 constexpr 函式庫函數的擴充處理是否符合要求?

GCC 將非 constexpr 標準函式庫函數視為 constexpr 的能力某些情況會引發有關一致性的問題。

矛盾標準

在 C 11 標準草稿中,似乎明確允許將內建函數視為 constexpr。然而,在 C 12 中共識發生了變化,提案發生了變化,導致 C 14 明確禁止這種行為。

假設規則

在 C 11 中,它目前還不清楚假定規則是否允許這種行為。有些意見認為可能,但這種解釋在處理此特定主題的 LWG 2013 號決議中並未得到證實。

GCC 的實施

GCC 實施此行為基於 LWG 2013 早期提出的決議,該決議允許隱式處理為 constexpr 函數。然而,最終的決議發生了變化,這個擴展現在在 C 14 中是不符合的。

嚴格模式下的一致性

為了符合C 14 標準,GCC遇到時應在嚴格一致性模式(-std=c 11 -pedantic 或- std=c 14 -pedantic)下發出警告constexpr 上下文中使用的非constexpr 函式庫函數。或者,應在這些模式下停用此行為。

內在函數豁免

標準不涵蓋編譯器內在函數,因此,它們可能會被區別對待。在 constexpr 上下文中使用編譯器內部函數很可能仍然可以接受。

以上是GCC 在 Constexpr 上下文中對非 constexpr 標準函式庫函數的擴充處理是否符合 C 標準?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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