Visual Studio 中 __cplusplus 宏一直爲“199711L”

__cplusplus是什麼

__cplusplus 宏用於獲取 C++ 標準的版本號。
c++標準版本

Visual Studio 中 __cplusplus 宏一直爲“199711L”

如下圖所示,由auto可以看出這是段c++11或更新版本編寫的代碼,可是運行結果卻不對。這是一個歷史遺留問題,目前已經得到了“部分解決”。所謂“部分解決”是指默認情況下,Visual Studio 始終爲 __cplusplus 預處理器宏返回值“199711L”,只有在在啓用了 /Zc:__cplusplus 選項後,__cplusplus纔會顯示正確的值。
爲什麼不把__cplusplus直接改爲正確的值呢?其實微軟發現若直接改掉會造出海量的bug。所以只好先這麼用着吧。

// ConsoleApplication3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>

int main()
{
   auto i = 1; // 此處代碼許需__cplusplus>=c++11
   printf("atuo:%d\n", i);
   printf("__cplusplus: %d\n", __cplusplus);
    return 0;
}

在這裏插入圖片描述

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

  1. 打開“配置屬性” > “C/C++” > “命令行”屬性頁
  2. 將 /Zc:__cplusplus 添加到“其他選項:”窗格
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章