1
我正在使用Visual Studio 2015 Update 3,而我的_MSVC_LANG
被定義爲201402L
,無論我是否提供/std:c++14
作爲編譯器參數。_MSVC_LANG有哪些值?
_MSVC_LANG
在晚期或早期版本的visual-C++中有其他值嗎?
我正在使用Visual Studio 2015 Update 3,而我的_MSVC_LANG
被定義爲201402L
,無論我是否提供/std:c++14
作爲編譯器參數。_MSVC_LANG有哪些值?
_MSVC_LANG
在晚期或早期版本的visual-C++中有其他值嗎?
在Visual Studio 2015之前,_MSVC_LANG
宏不存在(在內部它們依賴於包含等效版本號的__cplusplus
宏)。
在Visual Studio的yvals.h
頭,你可以看到C++版本的宏邏輯(這是從Visual Studio 2017年15.3.3):
#ifndef _HAS_CXX17
#if defined(_MSVC_LANG) && !(defined(__EDG__) && defined(__clang__)) // TRANSITION, VSO#273681
#if _MSVC_LANG > 201402
#define _HAS_CXX17 1
#else /* _MSVC_LANG > 201402 */
#define _HAS_CXX17 0
#endif /* _MSVC_LANG > 201402 */
#else /* _MSVC_LANG etc. */
#if __cplusplus > 201402
#define _HAS_CXX17 1
#else /* __cplusplus > 201402 */
#define _HAS_CXX17 0
#endif /* __cplusplus > 201402 */
#endif /* _MSVC_LANG etc. */
#endif /* _HAS_CXX17 */
預處理器定義_HAS_CXX17
& _HAS_CXX14
控制列入STL功能。
[This](https://blogs.msdn.microsoft.com/vcblog/2016/08/12/stl-fixes-in-vs-2015-update-3/)可能是你在找什麼。 – selbie
/std:C++ 14是更新3的默認值,因此添加選項不會改變任何內容。沒有早期版本的宏,我們沒有時間機器來猜測更高版本。去嘗試一下。 –