我根据另一个文件(XML文件)提供的信息生成C代码。某些C块包含在此XML文件中,应该逐字包含在我生成的C文件中。我希望使用#line指令,这样如果这些块包含错误,用户将在XML文件中看到块来自的行号。例如,我希望生成如下代码:
int main() {
#line 35 "file.xml"
....
#line
}
我希望以某种方式“关闭”#line部分,我的意思是我认为如果出现错误,例如关闭}并且由我的程序生成,用户应该不看到“file.xml第36行的错误”,这对他们来说毫无意义并使他们感到困惑。
例如,我可以想象#line指令本身(如我的例子中)会做类似的事情。但它不起作用,gcc docs on #line中没有提到任何此类设施。
我有没有这样的设施?或者我只是要求一些不存在的东西?你会怎么解决这个问题?
答案 0 :(得分:3)
您需要向原始文件的行和文件名发出另一个#line
指令“重置”。