我有一个代码生成器,它将获取一些用户编写的代码并将其块嵌入到一个更大的生成文件中。我希望底层编译器在用户代码中存在缺陷时提供良好的诊断,但我也不希望生成的代码中的缺陷在不应该被错误归因于源时。
我打算#line lineNum "sourceFile"
在每个用户编写的代码块的开头发出指令。但是,一旦我离开用户提供的代码,我找不到任何#line
提及“重置”技术__LINE__
并__FILE__
返回到生成文件中的实际行的指令文档。理想的解决方案类似于 C# 预处理器的#line default
指令。
我是否只需要跟踪我写了多少行并自己手动重置?还是有更好的方法,我可以传递某种重置指令或哨兵值#line
来消除与用户代码的关联?
看起来这可能是以前提出的,尽管那里没有可靠的答案。为了区分这一点,我还要询问 C++11 中缺少答案的情况是否发生了变化。