Странная ошибка компилятора из-за использования xml в комментариях c ++ - PullRequest
3 голосов
/ 08 сентября 2011

Я работаю над проприетарной Unix-подобной ОС (я не знаю, насколько это актуально) и компилирую с g ++.

Недавно я заметил, что если я добавляю xml-подобные теги в мои комментарии C ++, я получаю ошибки компилятора. Мне особо не нужно это делать, но я подумал, что это странно, и я хотел бы знать, почему это является проблемой для компилятора. Например:

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

вызвало бы огромные ошибки компилятора, если бы оно было где-то в середине моего кода. Изменение последней строки комментария </debugoutput> на <debugoutput> делает его компиляцией без проблем.

Кто-нибудь знает, почему компилятор будет смущен тем, что эта строка находится в комментарии? Ошибки компиляции, возникающие при этом, не кажутся связанными вообще - они больше похожи на то, что вы увидите, если пропустите точку с запятой в конце класса, неопределенные ссылки на четко определенные классы и т. Д. Я могу ' Вставьте вывод из моей системы разработки, но поверьте мне, это не похоже на проблему - скорее, компилятор запутался.

1 Ответ

2 голосов
/ 09 сентября 2011

Это звучит подозрительно, как проблема, связанная с орграфом, но без реального сообщения об ошибке или небольшого примера кода, в котором обнаружена проблема, трудно сказать наверняка.

Попробуйте изменить пробел между <, / и фактическим текстом, а также попробуйте сделать это в комментарии в стиле C, чтобы убедиться, что это дает дополнительную информацию.

Для получения информации о орграфах и триграфах C / C ++ см. http://en.wikipedia.org/wiki/C_trigraph#C, а также Назначение последовательностей триграфов в C ++? и Почему существуют орграфы в C и C ++? от SO.

Кажется возможным, что какая-то последовательность выбирается (например, </ в качестве орграфа и он сбрасывает компилятор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...