簡體   English   中英

Visual Studio 中支持的語言 C++ __cplusplus 顯示為 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.

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