有没有办法在C中“撤消”#line的效果?

时间:2009-12-23 20:27:43

标签: c line

我根据另一个文件(XML文件)提供的信息生成C代码。某些C块包含在此XML文件中,应该逐字包含在我生成的C文件中。我希望使用#line指令,这样如果这些块包含错误,用户将在XML文件中看到块来自的行号。例如,我希望生成如下代码:

int main() {
   #line 35 "file.xml"
   ....
   #line
}

我希望以某种方式“关闭”#line部分,我的意思是我认为如果出现错误,例如关闭}并且由我的程序生成,用户应该看到“file.xml第36行的错误”,这对他们来说毫无意义并使他们感到困惑。

例如,我可以想象#line指令本身(如我的例子中)会做类似的事情。但它不起作用,gcc docs on #line中没有提到任何此类设施。

我有没有这样的设施?或者我只是要求一些不存在的东西?你会怎么解决这个问题?

1 个答案:

答案 0 :(得分:3)

您需要向原始文件的行和文件名发出另一个#line指令“重置”。