ユーザーが作成したコードを取得し、そのチャンクをより大きな生成ファイルに埋め込むコードジェネレーターがあります。ユーザーのコードに欠陥がある場合に、基礎となるコンパイラが適切な診断を提供することを望んでいますが、生成されたコードの欠陥がソースに起因するべきではない場合に誤って起因することも望んでいません。
#line lineNum "sourceFile"
ユーザー作成コードの各チャンクの先頭にディレクティブを発行するつもりです。ただし、ユーザー提供のコードを離れると、「リセット」して生成されたファイルの実際の行に戻るため#line
の手法について言及しているディレクティブのドキュメントが見つかりません。理想的なソリューションは、C# プリプロセッサのディレクティブに似ています。__LINE__
__FILE__
#line default
自分が書いた行数を追跡し、自分で手動でリセットする必要がありますか? #line
または、ユーザーのコードとの関連付けを消去するために渡すことができるリセット ディレクティブまたはセンチネル値のような、より良い方法はありますか?
確かな答えはありませんが、これは以前に提起された可能性があるようです。これとそれを区別するために、C++ 11 で回答の欠如が変わったかどうかを追加で尋ねます。