由于在c ++注释中使用xml导致奇怪的编译器错误

时间:2011-09-08 18:52:06

标签: c++ compiler-construction

我正在开发一个类似unix的专有操作系统(我不知道这是否相关)并使用g ++进行编译。

我最近注意到,如果我在我的C ++注释中放入类似xml的标签,我会遇到编译器错误。我并不特别需要这样做,但我认为这很奇怪,我想知道为什么这对编译器来说是一个问题。例如:

// <debugoutput>
std::cerr << "I'm debugging!" << std::endl;
// </debugoutput>
如果它位于我的代码中间,那么

会导致大量编译器错误。将最后一个注释行</debugoutput>更改为<debugoutput>会使编译正常。

有谁知道为什么编译器会被注释中的那一行混淆?发生这种情况时产生的编译器错误似乎根本不相关 - 如果你错过了类末尾的半冒号,未明确定义类的未定义引用等等,它们更像你所看到的。我可以' t粘贴我的开发系统的输出,但相信我看起来与问题无关 - 它更像是编译器混淆了。

1 个答案:

答案 0 :(得分:2)

这听起来像是一个与图有关的问题,但如果没有实际的错误信息或显示问题的小代码示例,很难确定。

尝试更改</和实际文字之间的空格,并在C风格的评论中尝试,以查看是否提供了额外的见解。

有关C / C ++有向图和三字母的信息,请参阅SO中的http://en.wikipedia.org/wiki/C_trigraph#C以及Purpose of Trigraph sequences in C++?Why are there digraphs in C and C++?

似乎有可能拾取一些序列(例如</作为有向图并且它正在抛弃编译器。)