14

c++ を使用して現在のメソッドの名前を取得する (標準化された) 方法はありますか?

GNU GCC を使用すると、マクロ__FUNCTION____PRETTY_FUNCTION__(2 つのアンダースコアで囲まれている) を使用してこれを行うことができますが、これはもちろん移植性がありません。標準のC ++でこれを行う方法、または移植可能にする方法はありますか?

4

4 に答える 4

27

__func__識別子はC99標準の一部であり、C++0xドラフトに含まれています。

識別子__func__は、次のものが各関数本体の最初にあるかのように、コンパイラによって暗黙的に宣言されます。

static const char __func__[] = "function-name";

ここfunction-nameで、はコンパイラによって自動的に提供される実装定義の文字列です。

これらの標準のサポートが利用可能になるまで(またはより広く利用可能になるまで)、コンパイラー固有の問題に悩まされます。

于 2008-10-29T17:39:51.963 に答える
1

いいえ......しかし、いくつかのものは非標準の標準になってしまいます!

ANSI標準のものの概要を説明しているhttp://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspxを参照してから、 FUNCTION を含むmicrosofsを参照してください。

于 2008-10-29T17:40:40.260 に答える
0

いいえ、c++標準ではサポートされていません。

于 2008-10-29T17:36:49.193 に答える
0

これは「イントロスペクション」と呼ばれ、C++標準にはそのようなものはありません。外部ライブラリを使用する必要があります(ブーストはどういうわけかそれをサポートしていると思います)。しかし、それを使用する理由が本当に良いものであるかどうかを理解してみてください。

于 2008-10-29T17:40:37.703 に答える