【发布时间】:2013-03-21 07:09:24
【问题描述】:
在不修改调用函数代码的情况下,有没有办法在c++中从被调用函数中获取调用函数名?
【问题讨论】:
-
我不认为这是可以做到的,至少在标准 C++ 中是这样。
-
代码是在调试模式下构建的。
标签: c++ visual-c++
在不修改调用函数代码的情况下,有没有办法在c++中从被调用函数中获取调用函数名?
【问题讨论】:
标签: c++ visual-c++
不,没有。代码编译后,所有函数名和变量名都会丢失。
出于调试目的而保留的调试信息可能包含该信息。但它不是代码本身的一部分,无法通过标准 C++ 方法访问。
【讨论】:
不,不在标准 C++ 中。
尽管大多数编译器都有特殊的私有函数来获取调用堆栈,但如果幸运的话,您可以将先前的函数地址类型转换为可调用的形式。但是如果有可能,那么您必须小心之前的调用是否是成员函数,因为成员函数需要为this 提供额外的参数。如果您没有对该对象的引用,则不能调用成员函数。当然,您还必须了解所有其他参数类型和位置。
简而言之,它可能是可能的,但这并不容易,而且很可能很危险。
【讨论】: