c++ を使用して現在のメソッドの名前を取得する (標準化された) 方法はありますか?
GNU GCC を使用すると、マクロ__FUNCTION__
と__PRETTY_FUNCTION__
(2 つのアンダースコアで囲まれている) を使用してこれを行うことができますが、これはもちろん移植性がありません。標準のC ++でこれを行う方法、または移植可能にする方法はありますか?
c++ を使用して現在のメソッドの名前を取得する (標準化された) 方法はありますか?
GNU GCC を使用すると、マクロ__FUNCTION__
と__PRETTY_FUNCTION__
(2 つのアンダースコアで囲まれている) を使用してこれを行うことができますが、これはもちろん移植性がありません。標準のC ++でこれを行う方法、または移植可能にする方法はありますか?
__func__
識別子はC99標準の一部であり、C++0xドラフトに含まれています。
識別子__func__
は、次のものが各関数本体の最初にあるかのように、コンパイラによって暗黙的に宣言されます。
static const char __func__[] = "function-name";
ここfunction-name
で、はコンパイラによって自動的に提供される実装定義の文字列です。
これらの標準のサポートが利用可能になるまで(またはより広く利用可能になるまで)、コンパイラー固有の問題に悩まされます。
いいえ......しかし、いくつかのものは非標準の標準になってしまいます!
ANSI標準のものの概要を説明しているhttp://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspxを参照してから、 FUNCTION を含むmicrosofsを参照してください。
いいえ、c++標準ではサポートされていません。
これは「イントロスペクション」と呼ばれ、C++標準にはそのようなものはありません。外部ライブラリを使用する必要があります(ブーストはどういうわけかそれをサポートしていると思います)。しかし、それを使用する理由が本当に良いものであるかどうかを理解してみてください。