__FUNCTION__の罠
うーん、あやうくハマるところだった。標準じゃないコンパイラの機能を使うのは危いねぇ。
gcc 2.95では__FUNCTION__は__FILE__と同じくプリプロセッサで処理されて文字リテラルになる。
gcc 3.4では__FUNCTION__は変数になる。
以下の「フリーソフトウェア徹底活用講座(8)」参照。
http://www.cqpub.co.jp/interface/column/freesoft/2003/200304/3.htm
ということで、以下のコードはgcc 2.95ではOK、gcc 3.4はNGになります。
printf(__FUNCTION__":%d\n", __LINE__);
gcc 2.95前提のコードが世の中にはごろごろあるんだなぁと感心しました。