別のファイル (XML ファイル) から提供される情報に基づいて C コードを生成しています。C の特定のチャンクがこの XML ファイルに含まれており、生成された C ファイルに逐語的に含まれている必要があります。#line ディレクティブを使用して、これらのチャンクにエラーが含まれている場合に、ユーザーがチャンクの元の XML ファイルの行番号を確認できるようにします。たとえば、次のようなコードを生成したいと考えています。
int main() {
#line 35 "file.xml"
....
#line
}
どういうわけか #line セクションを「閉じ」たいと思います。たとえば、終了 } でエラーが発生し、それが私のプログラムによって生成された場合、ユーザーには「file.xml の 36 行目のエラー」が表示されないはずです。それは彼らにとって無意味であり、彼らを混乱させます。
たとえば、(私の例のように) #line ディレクティブが単独でそのようなことを行うと想像できます。しかし、それは機能せず、 #lineの gcc ドキュメントにはそのような機能についての言及はありません。
私が見逃しているそのような施設はありますか?それとも存在しないものを求めているだけですか?このような問題にどう対処しますか?