使用默认内置Visual Studio 2012(v110)编译器或2012年11月CTP(v120_CTP_Nov2012)编译器的Visual Studio 2012 Professional(安装了Update 1),不会编译函数的__func__ C 11本地预定义变量.但是,编辑不会在__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__