Ошибки
Компилятор переходит ко второму
этапу генерации выполняемой программы только в
том случае, если исходный текст не содержит синтаксических
ошибок. В большинстве случаев в только что набранной
программе есть ошибки. Программист должен их устранить.
Процесс устранения ошибок носит итерационный характер.
Обычно сначала устраняются наиболее очевидные
ошибки, например, объявляются необъявленные переменные.
После очередного внесения изменений в текст программы
выполняется повторная компиляция. Следует обратить
внимание на то, что компилятор не всегда может
точно локализовать ошибку. Поэтому, анализируя
фрагмент программы, который, л о мнению компилятора,
содержит ошибку, нужно обращать внимание не только
на тот фрагмент кода, на который компилятор установил
курсор, но и на тот, который находится в предыдущей
строке. Например, в следующем фрагменте кода:
// вычислить ток
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 (лишний параметр при вызове функции)
|
Неверно записана инструкция вызова функции, указан лишний параметр
|
Если компилятор обнаружил достаточно много ошибок, то просмотрите все сообщения и устраните сначала наиболее очевидные ошибки и выполните повторную компиляцию. Вполне вероятно, что после этого количество ошибок значительно уменьшится. Это объясняется особенностями синтаксиса языка, когда одна незначительная ошибка может "тащить" за собой довольно большое количество других. |