事前定義済みの ID

事前定義済みの ID __func__ を使用すると、関数名をその関数内で 使用することができます。各関数定義の左中括弧の直後に、__func__ がコンパイラーによって暗黙的に宣言されます。これによる振る舞いは、次の宣言が行われた場合と 同じになります。

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

ここで、function-name はこの ID を字句として含んでいる関数の名前です。 この関数名はマングルされません。

この ID が assert マクロとともに使用されると、このマクロは標準エラー・ストリーム にこの ID を含んでいる関数の名前を追加します。

C++C++ は、C99 と互換性を持たせるための言語拡張として、 事前定義済みの ID __func__ をサポートしています。

関数名はエンクロージング・クラス名または関数名で修飾されます。 例えば、foo は、C クラスのメンバー関数です。 foo の事前定義済み ID は C::foo です。foomain の本体内で定義されている場合は、foo の 事前定義済み ID は main::C::foo になります。

テンプレート関数またはメンバー関数の名前は、 インスタンス化された型を反映しています。 例えば、int でインスタンス化されたテンプレート関数 foo の事前定義済み ID です。

template<classT> void foo()

は、foo<int> です。

関連参照

IBM Copyright 2003