«前の日記(2008-09-30) 最新 次の日記(2008-10-04)» 編集

いがいが日記


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) を取得可能。

本日のツッコミ(全2件) [ツッコミを入れる]
_ やまさき (2008-10-04 00:38)

__func__って、確かマクロじゃなくって使うのに注意が必要とかでしたっけ?<br>関数名だけを高速に綺麗に取り出せると、障害ログとかに<br>結構使えそうとか思いつつも、未だに__FILE__、__LINE__<br>らぶです(笑)

_ いが (2008-10-05 10:48)

>やまさきさん<br>んー、C99は使ったことないんでわかんないっす。<br>使ってバッドノウハウなどあったら教えてください。


«前の日記(2008-09-30) 最新 次の日記(2008-10-04)» 編集