C言語のお話
今日も今日とてソース解析。
だらだら追っかけてたら見慣れぬものが。
printf("%s(%d)@%s\n", __FILE__, __LINE__, __func__);
ん?__FILE__はともかく、__func__てなに(´・ω・`)?
書式が%sだから文字列だろうけど…え?func?まさか…?
実際に試してみた
#include
void hoge001()
{
printf("%s\n", __func__);
}
void hoge002()
{
printf("%s\n", __func__);
}
void main()
{
printf("%s\n", __func__);
hoge001();
hoge002();
}
コンパイルー、実行ーえい!
main
hoge001
hoge002
ちょwwwなにこの素敵なマクロwwwえ?マクロ?なんだこれ(;´ロ`)
グーグル先生に聞いてみた。__func__ - Google 検索
やっぱりそのまんま。関数名が入ってるっぽい。
しかもC99からって前世紀からあるのかよっ気付けよ私っヽ(`○´)/
てかDirectXのDX_DebugStringだっけ?Trace?最近ご無沙汰なのでど忘れ。
あれでも使われてなかったような…
と言う訳で、デバッグにめちゃくちゃ役立ちそうな発見でした。
#define TRACE(x) printf("%s(%d)@%s:%d\n", __FILE__, __LINE__, __func__, x)
こんなマクロ一つでデバッグ効率全然違うし。
知らなかった方はぜひ活用してみてください。
ちなみに↑で試したのはRedhutLinuxのgcc。VS.NET無いんですよ今の環境(;´ロ`)
VS.NETの環境で試せる人、試して結果教えてください某X社の人たちw
BCCだとどうなのかな?