13

函数的__func__C++11 本地预定义变量无法在 Visual Studio 2012 Professional(安装了 Update 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

我是否在我的代码中遗漏了某些内容,或者这是否会在未来的更新中起作用?

4

2 回答 2

14

MSVC 对 C99 的支持总体上很差;您最好的选择可能是使用特定于 MSVC 的__FUNCTION__宏。有关详细信息,请参阅此问题:为宏 __FUNCTION__ 和 __func__ 定义 #define 跨平台

更新 (2015-06-22):Visual Studio 2015 支持__func__,请参阅博客文章

于 2013-03-01T02:49:02.007 回答
-3

使用 C++11 标准编译程序,就像__func__C++11 功能一样。

所以,像这样编译它:

g++ -std=c++11 foo.cpp -o foo
于 2015-06-07T09:01:04.083 回答