Насколько стандартизированы ошибки компиляторов? - PullRequest
0 голосов
/ 19 сентября 2011

Я заинтересован в автоматической фильтрации и интерпретации сообщений об ошибках, выводимых gcc и другими компиляторами

Например, это регулярное выражение (которое может быть улучшено, но вы поняли идею)

^(.+?):(\d+)(:(\d+))?:\s+(\w+):\s+(.*)$

будет захватывать следующую ошибку gcc

x.cpp: 5: ошибка: ожидаемый инициализатор до 'std'

с

  • $1 = название источника
  • $2 = номер строки
  • $4 = номер столбца (не все версии gcc)
  • $5 = категория («ошибка» или «предупреждение»)
  • $6 = текст ошибки

Какие гарантии даются в отношении стабильности и переносимости формата строки между различными версиями gcc? Какие-либо гарантии для других компиляторов?

1 Ответ

0 голосов
/ 19 сентября 2011

Нет никакой гарантии - стандарт скажет «код неверен», и компилятор выдаст любую ошибку, которую решит.

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

statement1 //no ;
statement2;

, они скажут no ; before statement2, что правильно, но не так удобно и полезно, как no ; after statement1.А сообщения об ошибках, генерируемые при компиляции шаблонов, настолько ужасны, что для них даже существуют автономные преттификаторы.

...