__FUNC__
定義済みマクロ への移動
説明
__FUNC__ は、現在の関数の名前を表す、定義済みマクロとして実装されています。
__FUNCTION__ is equivalent to __FUNC__.
例
#include <tchar.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[]) {
printf("You are in function %s\n", __FUNC__);
return 0;
}
また、__FUNC__ マクロは、以下のようにクラスのメソッドで使用することもできます。
#include <iostream>
class TSomeClass {
public:
void SomeMethod(void) {
std::cout << "You are in the class member " << __FUNC__ << std::endl;
}
};
int main() {
TSomeClass SomeClass;
SomeClass.SomeMethod();
return 0;
}
ただし、このマクロは、グローバル スコープを使って宣言された場合は無効です。 __FUNC__ が関数のスコープ外にある場合、その値は不確定な文字列になります。
そのような誤った使用例を以下に示します。
#include <stdio.h>
char * funcStr = __FUNC__;
int main() {
printf("You are in function %s\n", funcStr); // Won’t work as expected
return 0;
}