__func__函数的C++ 11本地预定义变量不能使用默认的内置Visual Studio 2012(v110)编译器或2012年11月的CTP(v120_CTP_Nov2012)编译器在Visual Studio 2012 Professional(安装了Update 1)中进行编译.然而,编辑并没有抱怨任何红色波浪形下划线__func__.__func__在这种情况下foo,它应该给出其包含函数的名称,但这既不编译也不让编辑抱怨:
#include <iostream>
using namespace std;
void foo()
{
cout << __func__ << endl;
return;
}
int main()
{
foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它给出了编译器错误:
error C2065: '__func__' : undeclared identifier
Run Code Online (Sandbox Code Playgroud)
我在代码中遗漏了什么,或者在未来的更新中是否可以使用?
c++ standards-compliance visual-c++ c++11 visual-studio-2012
gcc中有一个魔术变量,它持有一个指向当前函数的指针吗?
我想有一种表包含每个函数指针的一组信息.
我知道有一个__func__变量包含当前函数的名称作为字符串但不作为函数指针.
这不是为了调用函数而是仅仅用作索引.
编辑 基本上我想做的是能够在执行当前函数之前运行嵌套函数(并且还捕获返回以执行某些操作.)基本上,这就像__cyg_profile_func_enter和__cyg_profile_func_exit(检测函数).但问题是这些仪器功能是全局的而不是功能专用的.
编辑
在Linux内核中,你可以使用unsigned long kallsyms_lookup_name(const char *name)从include/linux/kallsyms.h...请注意CONFIG_KALLSYMS选项必须被激活.
有没有办法获得指向当前函数的指针,可能通过gcc扩展或其他一些技巧?
编辑我很好奇是否可以在没有明确使用函数名称的情况下获取函数指针.我以为我有充分的理由想要这个,意识到我不是真的,但我仍然很好奇是否有可能.