__func__ C ++ 11函数的局部预定义变量,将无法编译(__func__ C++11 fu

2019-07-20 16:33发布

__func__函数的C ++ 11的本地预定义变量并不在Visual Studio 2012专业版编译(含更新1安装),内置在默认的Visual Studio 2012(V110)编译器或2012年11月CTP(v120_CTP_Nov2012)编译器。 但是,编辑器不抱怨任何红色波浪下划线下__func____func__应该给予其包含函数的名称,在这种情况下, foo ,但这既不是编译也不做编辑抱怨:

#include <iostream>
using namespace std;

void foo()
{
    cout << __func__ << endl;
    return;
}

int main()
{
    foo();
    return 0;
}

它使编译器错误:

error C2065: '__func__' : undeclared identifier

我失去了我的代码的东西或将此项工作在以后的更新?

Answer 1:

MSVC的C99支持是一般相当差; 你最好的选择可能是使用特定的MSVC- __FUNCTION__宏。 详情请参见这个问题: 对于宏__FUNCTION__和__func__跨平台定义的#define

更新(2015年6月22日):的Visual Studio 2015年支持__func__ ,看到博客文章



Answer 2:

编译使用C ++ 11标准为程序__func__是C ++ 11的功能。

因此,编译它,如:

g++ -std=c++11 foo.cpp -o foo


文章来源: __func__ C++11 function's local predefined variable, won't compile