2008-10-03 [長年日記]
_ [C++] クラス名取得
C++でクラス名を取得する場合のメモ。()の章番号はC++規格書JIS X 3014。
C++ではRTTIで実行時の型情報が取得可能。
規格上 type_info::name() の 返却値は
『処理系定義のNTBS』
という定義だけ。(18.5.1)なんで処理系依存。
__func__ は C99 拡張なので C++ では使用できず、
独自拡張として用いることが出来るだけ。
(__FUNCTION__ がVC++独自拡張機能)
C++であらかじめ定義されたマクロ名は (16.8) に書いてある。
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__
__cplusplus
g++なら __PRETTY_FUNCTION__ で ClassXXX::FuncXXX(int,int) を取得可能。
__func__って、確かマクロじゃなくって使うのに注意が必要とかでしたっけ?<br>関数名だけを高速に綺麗に取り出せると、障害ログとかに<br>結構使えそうとか思いつつも、未だに__FILE__、__LINE__<br>らぶです(笑)
>やまさきさん<br>んー、C99は使ったことないんでわかんないっす。<br>使ってバッドノウハウなどあったら教えてください。