Visual Studio下__cplusplus宏為199711L的問題


Visual Studio下__cplusplus宏為199711L的問題

/ Zc:__ cplusplus(啟用更新的__cplusplus宏)

/ ZC:__ CPLUSPLUS編譯器選項使__cplusplus預處理宏為最近C ++語言標准的支持報告的更新值。 默認情況下,Visual Studio始終為__cplusplus預處理器宏返回值“199711L” 

句法

/ Zc:__ cplusplus [ - ]

備注

所述__cplusplus預處理宏通常用來報告用於C ++標准的特定版本的支持。 由於許多現有代碼似乎依賴於此宏匹配“199711L”的值,因此編譯器不會更改宏的值,除非您使用/ Zc:__ cplusplus編譯器選項明確選擇加入/ ZC:__ CPLUSPLUS選項可用在Visual Studio 2017年開始15.7版本,並且默認是關閉的。在早期版本的Visual Studio中,默認情況下,或者如果指定了/ Zc:__ cplusplus-,Visual Studio將為__cplusplus預處理器宏返回值“199711L” / permissive- 選項不啟用/ Zc:__ cplusplus

/ ZC:__ CPLUSPLUS啟用選項,則所報告的值__cplusplus宏依賴於/ STD版開關設置。 此表顯示宏的可能值:

/ Zc:__ cplusplus開關 / std:c ++開關 __cplusplus值
Zc:__ cplusplus / std:c ++ 14(默認) 201402L
Zc:__ cplusplus / STD:C ++ 17 201703L
Zc:__ cplusplus / STD:C ++最新 201704L
Zc:__ cplusplus-(禁用) 任何價值 199711L
未標明 任何價值 199711L

編譯器不支持C ++ 98,C ++ 03或C ++ 11的標准交換機。

要更精細地檢測編譯器工具集的更改,請使用_MSC_VER預定義宏。 對於Visual Studio 2017及更高版本中的每個工具集更新,此內置宏的值都會遞增。無論/ Zc:__ cplusplus選項是啟用還是禁用_MSVC_LANG預定義宏都會報告標准版本/ Zc:__ cplusplus啟用時, __cplusplus == _MSVC_LANG

在Visual Studio中設置此編譯器選項

  1. 打開項目的“ 屬性頁”對話框。 有關詳細信息,請參閱在Visual Studio中設置C ++編譯器和構建屬性

  2. 選擇“ 配置屬性” >“ C / C ++” >“ 命令行”屬性頁。

  3. / Zc:__ cplusplus/ Zc:__ cplusplus-添加其他選項:窗格。

參考:

1./ Zc:__ cplusplus(啟用更新的__cplusplus宏)


2.VS2017下__cplusplus宏為199711L的問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM