簡體   English   中英

有沒有辦法確定由C ++編譯器實現的語言功能?

[英]Is there a way to determine language features implemented by a C++ compiler?

不同的C ++編譯器在不同的時間點實現各種語言功能(例如,參見clang C ++狀態gcc c ++狀態 ;其他編譯器也是如此)。 創建C ++庫時,通常需要支持最新功能以改善用戶體驗。 當支持新功能而不是在各處實現的公共子集時,了解編譯器支持哪些功能而不必為每個編譯器都支持一組版本號會很有幫助。

是否存在合理標准化的功能測試集,可在編譯時使用這些功能測試來確定編譯器是否支持特定語言功能?

您可能無法比Boost.Config庫做得更好。 它為各種C ++ 11和C ++ 14功能定義了預處理器宏,而VC ++等C ++ 11/14式編譯器並未普遍支持這些宏。 它與您將要達到標准的程度相近。

IIRC通過預構建(並在必要時執行)一堆簡單的測試程序來與autoconf相似。 我認為您不會得到完全在編譯時可運行的任何東西,僅因為在一種實現中有關鍵字而在另一種實現中有語法錯誤。

我沒有嘗試使用這些建議,但是在C ++委員會會議上,功能測試SG(SG10)會見並更新建議列表。 是最新的文檔,列出了當前的功能測試宏:存在用於各種語言級別功能的宏。 期望在將新功能投票納入工作草案后,將更新文檔P0096rx。

本文檔不是標准文檔:該標准要求執行語言標准,並且對表示是否已實現特定功能的宏進行標准化是沒有意義的! 一個實現要么完全符合,要么完全不符合。 但是,期望編譯器供應商確實使用這些宏作為幫助用戶的指南。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM