ANSI Cではプリプロセッサマクロが用意されています。コンパイルの前処理として実行され、定義済みのトークンをあらかじめ決められた値で置き換えてからコンパイラに渡すという物です。Javaでもそうですが、最近の言語ではプリプロセッサマクロのように、副作用の大きな物は排除しているように見えます。まぁマクロの廃止は誤りの少ないプログラムを書くためには正しいと思うのですが、それでもやはり使いたい物がいくつかあります。 その筆頭が__FILE__と__LINE__。これらはコンパイルの前処理で、「ファイルのフルパス」と「ファイルの行番号」として置き換えられます。特殊定数(INT_MAXとか)のようにプログラムの動作としては役に立ちませんが、タグジャンプ書式のログを吐き出すときは結構便利なのです。私はこんな感じで使っています。 wsprintf(szOutput, "%s(%d) lRet:%ld",