まれに、__LINE__
で指定された行を別のものに変更すると便利です。私はGNU configureが元のソースファイルに現れない行の間にいくつかのブードーを挿入した後、適切な行番号を報告するテストがあることを知っています。たとえば:
#line 100
は、次の行は、あなたが、必要に応じてそれが唯一のまれ便利です
#line 100 "file.c"
新しいファイル名を追加することができます__LINE__
100で始まるようになります。しかし、それが必要な場合は、私が知っている選択肢はありません。実際には、行の代わりに、上記の2つの形式のいずれかになるマクロも使用できます。ブーストプリプロセッサライブラリを使用して、あなたが50で現在の行をインクリメントすることができます
#line BOOST_PP_ADD(__LINE__, 50)
私はあなたが__LINE__
と__FILE__
の使用について尋ねているので、それはそれを言及するのに便利だと思いました。 @ジョナサンレフラーは、コメント欄でいくつかのより良いユースケースを提供します:#行をいじり
は、その前のプロセッサのために非常に有用である一つは、C++ :)
編集のうち、十分な驚きを得ることはありませんユーザのソースファイルに沿ってユーザのCコードにエラーを報告したい。 Yacc、Lex、(私にとっては自宅で)ESQL/Cプリプロセッサがそうしています。
__LINE__は正しいことを行う必要があります。私はそれを__PRETTY_FUNCTION__を含む広範囲に使用してきました。 ...しかし...まあ、私はちょうど__LINE__があるコードを見ています。おそらく、try/catch例外処理のためのcatchブロック内にあるからです。 –
関連:[定義済みのマクロのgccリファレンス](http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html) –