c++ - __func__ C++11 函数的局部预定义变量,不会编译

标签 c++ visual-c++ c++11 visual-studio-2012 standards-compliance

函数的 __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

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

最佳答案

MSVC 对 C99 的支持总体上很差;您最好的选择可能是使用特定于 MSVC 的 __FUNCTION__ 宏。有关详细信息,请参阅此问题:Cross-platform defining #define for macros __FUNCTION__ and __func__

更新 (2015-06-22):Visual Studio 2015 支持 __func__,参见 blog post

关于c++ - __func__ C++11 函数的局部预定义变量,不会编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15126387/

相关文章:

c++ - 构造函数名称前的关键字 struct

c++ - 如何使用宏来收集变量名?

c++ - 包含所有包含 header 内容的临时文件

c++ - 异常 : Access violation

c++ - 如何从指向基类的唯一指针获取子类成员?

c++ - libjpeg 自定义源管理器

c++ - 失败时 C++ 中的 istream 行为变化

c++ - 声明类型包含未扩展的参数包 'Args'

c++ - MSVC 处理大量包含路径

c++ - wstring.find_last_not_of() 将国际字符之后的所有内容都视为空格?