Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mlr_progr_1sem.doc
Скачиваний:
7
Добавлен:
03.11.2018
Размер:
1.72 Mб
Скачать

Компиляция и устранение ошибок

Прелесть компилятора Си заключается в том, что он автоматически вылавливает различные синтаксические ошибки и указывает на них программисту.

Рассмотрим теперь вопросы компиляции в среде Visual C++ 6.0.

Если вы уже набрали программный код листинга 1, то нажмите клавишу F7 для компиляции. Внизу экрана появится окно, в которое выводятся результаты компиляции (рис. 10).

Рис. 10.

Если программный код набран без ошибок, то процесс компиляции завершается строкой:

Имя проекта.exe – 0 error(s), 0 warning(s)

Попробуем теперь сделать различные ошибки и посмотрим на реакцию компилятора.

Закомментируйте в листинге 1 строку #include (рис. 11).

Рис. 11.

При попытке скомпилировать программу компилятор выдаст ошибку «'printf' : undeclared identifier». Если в дальнейшем вы будете сталкиваться с ошибкой «undeclared identifier» в отношении какой-либо стандартной функции, то это, как правило, будет означать, что вам необходимо подключить соответствующую библиотеку.

Верните код программы в исходное сотояние и удалите символ «;» в конце строки printf() рис. 12. Попытайтесь скомпилировать программу.

Рис. 12.

Рис. 13.

Компилятор также выдаст соответствующую ошибку. Вы можете отследить местоположения ошибок в программном коде, дважды щелкнув мышкой по соответствующей ошибке в окне результатов компиляции.

Следует отметить, что не всегда сообщения компилятора позволяют быстро и однозначно идентифицировать ошибку. Измените программный код, так как это показано на рис. 13 и скомпилируйте его. В данном случае нехватка в строке символа «”» приводит к целому ряду ошибок на первый взгляд никак с ним не связанных. Вообще в программах на Си++, особенно больших, простая синтаксическая ошибка может повлечь за собой сотни ошибок при компиляции. Это вполне обычная картина.

Следует отметить, что очень часто интеллектуальная мощь компилятора Си++ приводит к возникновению у начинающих программистов заблуждения, заключающегося в том, что, дескать, компилятор умный он все ошибки найдет. Это неверно. Ни один компилятор в мире не найдет ошибку в слове «собака» если правильным является слово «кошка». Компилятор способен контролировать синтаксис программы. За ее логику должен отвечать программист.

Запуск программы на выполнение и ее останов

Запуск любой программы производится тогда, когда вы добились безошибочной компиляции этой программы. Продолжим работу с программой «Hello, world!». Если вы находитесь в среде Visual C++ 6.0 нажмите клавишу F5. В вы, возможно, заметите на экране быструю смену каких-то окон, но в целом придете к выводу, что ничего не произошло. Это объясняется тем, что в программе не предусмотрена пауза перед завершением работы. Фактически, после печати слов «Hello, world!» программа сразу же закрывается, и вы просто не успеваете посмотреть результат ее работы.

В среде Visual C++ 6.0 данная проблема решается нажатием комбинации клавиш Ctrl + F5 вместо F5.

Довольно часто в ходе отладки сложных программ, возникает необходимость остановить работу программы. Иногда это невозможно сделать обычными методами. Например, в программе может возникнуть, так называемый «вечный цикл» из-за которого можно наблюдать эффект «зависания» программы. В этом случае программа не реагирует на команды, подаваемые мышью.

Если вы работаете со средой Visual C++ 6.0 то вам необходимо переключиться в окно редактора кода. После этого вам необходимо нажать комбинацию Shift + F5.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]