开发者

Strange compiler error due to use of xml in c++ comments

I'm working on a proprietary unix-like os (I don't know if that's relevant though) and compiling with g++.

I noticed recently that if I put xml-like tags in my C++ comments I get compiler errors. I don't particularly need to do this, but I thought it was strange and I'd like to know why it's an i开发者_如何学Cssue for the compiler. For example:

// <debugoutput>
std::cerr << "I'm debugging!" << std::endl;
// </debugoutput>

would cause massive compiler errors if it were in the middle of my code somewhere. Changing the last comment line </debugoutput> to <debugoutput> makes it compile fine though.

Does anyone know why the compiler would be confused by that line being in a comment? The compiler errors generated when this happens don't seem related at all - they're more like what you'd see if you missed the semi colon on the end of a class, undefined references to well defined classes, etc. I can't paste the output from my dev system, but trust me that it doesn't look related to the issue - its more like the compiler got confused.


This sounds suspiciously like a digraph related issue, but without the actual error message or a small code sample that exhibits the problem it's hard to tell for sure.

Try changing the whitespacing between the <, / and actual text, as well as try it within a C-style comment to see if that provides additional insight.

For information on C/C++ digraphs and trigraphs see http://en.wikipedia.org/wiki/C_trigraph#C and also Purpose of Trigraph sequences in C++? and Why are there digraphs in C and C++? from SO.

It seems possible that there is some sequence being picked up (for example </ as a digraph and it's throwing off the compiler).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜