假设我有一些功能:
void func1 (){
...
}
void func2(){
...
}
int main(){
func1();
//check called functions
return 0;
}
我想检查哪个函数被调用。这是func1
。我可以为此制作一个更特殊的检查功能。但是有可能获得函数的名称,该函数是从堆栈框架调用的吗?
答案 0 :(得分:1)
编译代码时,此信息不再为人所知。您可以使用ad hoc解决方案,例如函数本身的返回函数名称(使用__FUNCTION__
宏来简化您的生活)。当然,这将是非常丑陋的。
答案 1 :(得分:1)
我建议不要直接调用函数,而是使用函数对象:
struct func_base
{
virtual const std::string& get_function_name(void) const = 0;
virtual void execute(void) = 0;
void operator() (void)
{
execute();
}
};
这将允许您检索您执行的函数的名称。