2

呼び出し元の関数のコードを変更せずに、c++ で呼び出された関数から呼び出し元の関数名を取得する方法はありますか?

4

2 に答える 2

-1

いいえ、ありません。コードがコンパイルされると、関数名と変数名はすべて失われます。

その情報を持つことができるデバッグ目的のために保持されているデバッグ情報があるかもしれません。ただし、これはコード自体の一部ではなく、標準の C++ メソッドを介してアクセスすることはできません。

于 2013-03-21T07:11:38.457 に答える
-1

いいえ、標準の C++ ではありません。

ただし、ほとんどのコンパイラには呼び出しスタックを取得するための特別なプライベート関数がありますが、運が良ければ、以前の関数アドレスを呼び出し可能オブジェクトに型キャストすることができます。ただし、可能であれば、前の呼び出しがメンバー関数であったかどうかに注意する必要があります。メンバー関数にはthis. そのオブジェクトへの参照がない場合、メンバー関数を呼び出すことはできません。そしてもちろん、他のすべての引数の型と位置も知っておく必要があります。

要するに、それは可能かもしれませんが、簡単ではなく、おそらく危険です。

于 2013-03-21T07:13:02.647 に答える