我有一个代码生成器,将使用者编写的代码嵌入到较大的生成文件中。我希望底层编译器在用户代码存在缺陷时提供良好的诊断,但当不应该将生成代码的缺陷归因于源代码时,我也不希望出现这种情况。
我打算在每个用户编写的代码块的开头发出
我是否只需要跟踪我已经编写了多少行并手动重置它?或者有没有更好的方法,可以传递重置指令或哨兵值给
我打算在每个用户编写的代码块的开头发出
#line lineNum "sourceFile"
指令。然而,我找不到任何关于#line
指令的文档,提到了一种将__LINE__
和__FILE__
“重置”回到生成文件的实际行数的技术,一旦离开了用户提供的代码。理想的解决方案类似于C#预处理器的#line default
指令。我是否只需要跟踪我已经编写了多少行并手动重置它?或者有没有更好的方法,可以传递重置指令或哨兵值给
#line
,以消除与用户代码的关联?
看起来这可能是以前提出过的, 不过那里没有确定的答案。为了将其与那个区分开来,我还会问一下那里缺乏答案是否随着 C++11 而改变。
atomic
块,我希望引用它们。实际上,输出会在其他C++源文件中得到#include
并且作为这些文件的一部分进行预处理和编译。 - Phil Miller