![](/img/trans.png)
[英]Why is the Visual Studio Community 2017 C++ standard C++98?
[英]Language supported in Visual studio for C++ __cplusplus is showing as C++98
我正在嘗試在我的項目中運行 C++11。 我將編譯器標志/std:c++11
添加到編譯器,但是當我檢查版本並打印出來時,它顯示為 C++98。 這是在 Visual Studio 2019 中。
這是我用來打印語言的,它顯示為 C++98:
if (__cplusplus == 201703L) std::cout << "C++17\n";
else if (__cplusplus == 201402L) std::cout << "C++14\n";
else if (__cplusplus == 201103L) std::cout << "C++11\n";
else if (__cplusplus == 199711L) std::cout << "C++98\n";
else std::cout << "pre-standard C++\n";
std::cout << "C++ langauge supported = " << __cplusplus << "\n";
/Zc:__cplusplus
需要為__cplusplus
宏打開正確的版本控制。
但是請注意,編譯器不支持 C++98、C++03 或 C++11 的標准切換。 所以它只適用於/std:c++14
及更高版本。
正如 Ted Lyngmo 所提到的,還有_MSVC_LANG
marco(這不需要上面的編譯器標志):
_MSVC_LANG
定義為 integer 文字,指定編譯器針對的 C++ 語言標准。 它僅在編譯為 C++ 的代碼中設置。 默認情況下,宏是 integer 文字值 201402L,或者在指定/std:c++14
編譯器選項時。 如果指定了/std:c++17
編譯器選項,則宏設置為 201703L。 當指定/std:c++latest
選項時,它被設置為更高的、未指定的值。 否則,宏未定義。
有關此行為和新開關的更多背景信息,請參閱此 Visual C++ 博客文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.