2

无论如何在不修改调用函数代码的情况下从c ++中的被调用函数中获取调用函数名称?

4

2 回答 2

-1

不,没有。编译代码后,所有函数名和变量名都将丢失。

出于调试目的而保留的调试信息可能包含该信息。但它不是代码本身的一部分,无法通过标准 C++ 方法访问。

于 2013-03-21T07:11:38.457 回答
-1

不,不在标准 C++ 中。

尽管大多数编译器都有特殊的私有函数来获取调用堆栈,但如果幸运的话,您可以将先前的函数地址类型转换为可调用的形式。但是,如果可能,那么您必须小心之前的调用是否是成员函数,因为成员函数需要一个额外的参数this。如果您没有对该对象的引用,则无法调用成员函数。当然,您还必须了解所有其他参数类型和位置。

简而言之,这可能是可能的,但并不容易,而且很可能很危险。

于 2013-03-21T07:13:02.647 回答