Программирование с C++ Builder

           

Ошибки



Компилятор переходит ко второму этапу генерации выполняемой программы только в том случае, если исходный текст не содержит синтаксических ошибок. В большинстве случаев в только что набранной программе есть ошибки. Программист должен их устранить. Процесс устранения ошибок носит итерационный характер. Обычно сначала устраняются наиболее очевидные ошибки, например, объявляются необъявленные переменные. После очередного внесения изменений в текст программы выполняется повторная компиляция. Следует обратить внимание на то, что компилятор не всегда может точно локализовать ошибку. Поэтому, анализируя фрагмент программы, который, л о мнению компилятора, содержит ошибку, нужно обращать внимание не только на тот фрагмент кода, на который компилятор установил курсор, но и на тот, который находится в предыдущей строке. Например, в следующем фрагменте кода:

// вычислить ток
i = u/r
//. вывести результат в поле метки
Label4->Caption = "Ток : " +
FloatToStrF(i,ffGeneral,7,2) + " А";

не поставлена точка с запятой после оператора присваивания. Компилятор это обнаруживает, выводит сообщение statement missing ;, но выделяет строку Label4->caption = "Ток : " + и устанавливает курсор после идентификатора Label4.

В табл. 2.10 перечислены типичные ошибки и соответствующие им сообщения компилятора.

Таблица 2.10. Типичные ошибки

Сообщение


Ошибка
Undefined symbol (неизвестный символ)
Используется необъявленная переменная Имя переменной, функции или параметра записано неверно. Например, в программе объявлена переменная Summ, а в инструкциях используется sum
Statement missing ; (отсутствует точка с запятой)
После инструкции не поставлена точка с запятой
Unterminated string or character constant (незаконченная строковая или символьная константа)
В конце строковой константы, например, текста сообщения, нет двойных кавычек
) expected (ожидается закрывающая скобка)
При записи арифметического выражения, содержащего скобки, нарушен баланс открывающих и закрывающих скобок
if statement missing ( (в инструкции if нет открывающей скобки)
В инструкции if условие не заключено в скобки
Compound statement missing }
Нарушен баланс открывающих и закрывающих фигурных скобок. Вероятно, не поставлена закрывающая фигурная скобка отмечающая конец функции или группы инструкций, например, после условия или слова else в инструкции if
Extra parameter in call to (лишний параметр при вызове функции)
Неверно записана инструкция вызова функции, указан лишний параметр


Если компилятор обнаружил достаточно много ошибок, то просмотрите все сообщения и устраните сначала наиболее очевидные ошибки и выполните повторную компиляцию. Вполне вероятно, что после этого количество ошибок значительно уменьшится. Это объясняется особенностями синтаксиса языка, когда одна незначительная ошибка может "тащить" за собой довольно большое количество других.

Содержание раздела