
- •Институт радиоэлектроники и телекоммуникаций Кафедра радиотехнических систем конспект лекций по дисциплине
- •1.2. Идентификация файлов
- •2.1. Система меню, основные сведения о меню
- •2.2. Системное меню -
- •2.3. Меню File (Файл)
- •2.3.1. Команда New (Новый)
- •2.4. Меню Edit (Редактирование)
- •2.4.7. Команда Copy example (Скопировать пример)
- •2.4.8. Команда Show clipboard (Показать содержимое текстового буфера)
- •2.5. Меню Search (Поиск)
- •2.5.1. Команда Find... (Найти)
- •2.5.2. Команда Replace... (Заменить)
- •2.5.4. Команда Go to line number... (Перейти к строке с номером)
- •2.5.7. Команда Locate function... (Местоположение функции)
- •2.6. Меню Run
- •2.6.6. Команда Arguments... (Аргументы)
- •2.7. Меню Compile (Компиляция)
- •2.8. Меню Debug (Отладка)
- •2.8.4. Команда Watches (Просмотр выражений)
- •2.8.4.2. Команда Delete watch (Удалить выражение просмотра)
- •2.8.4.3. Команда Edit watch... (Редактировать выражение просмотра)
- •2.8.4.4. Команда Remove all watch (Удалить все выражения просмотра)
- •2.8.6. Команда Breakpoints... (Точки останова)
- •2.9. Меню Project (Проект)
- •2.10. Меню Options (Управление системой)
- •2.11. Меню Window (Окно)
- •2.11.3. Команда Cascade (Каскадное расположение)
- •2.11.4. Команда Title (Мозаичное расположение)
- •2.11.7. Команда Close all (Закрыть все)
- •2.11.8. Команда Message (Сообщение)
- •2.11.9. Команда Output (Выводимые данные)
- •2.11.10. Команда Watch (Выражение просмотра)
- •2.11.12. Команда Register (Регистры)
- •2.11.13. Команда Project (Проект)
- •2.11.14. Команда Project notes (Примечания)
- •2.12. Меню Help (Помощь)
- •2.12.1. Команда Contents (Содержание)
- •2.12.5. Команда Help on help (Информация по системе подсказки)
- •2.12.6. Команда Active file... (Активный файл)
- •2.12.7. Команда About... (о...)
- •3.2. Команды редактора
- •4. Компиляция программ
- •4.1. Установка параметров среды и режимов работы компилятора
- •4.2. Виды компиляции программ
- •4.3. Отладка программ на этапе компиляции Просмотр сообщений на этапе компиляции
- •Success : Press any key
- •Корректировка синтаксических ошибок
- •5. Компоновка программ
- •5.1. Команды компоновки программ
- •5.2. Отладка программ на этапе компоновки
- •Errors : Press any key
- •6. Отладка программ на этапе выполнения программы
- •6.1. Основные понятия
- •6.2. Подготовка системы к отладке программы
- •6.3. Установка, удаление и просмотр текущих значений Установка и удаление переменных и выражений из окна просмотра
- •Просмотр текущих значений
- •6.4. Трассировка программы
- •6.5. Работа с функциями
- •7. Сообщения об ошибках
- •Переменные, используемые в сообщениях об ошибках
- •7.1. Сообщения об ошибках на этапе компиляции программы Сообщения об ошибках компиляции
- •Критические (фатальные) ошибки (Fatal error)
- •7.2. Сообщения об ошибках на этапе компоновки
- •Критические (фатальные) ошибки компоновки
- •7.3. Сообщения об ошибках на этапе выполнения программы Ошибки этапа выполнения программы
- •Floating point error: Divide by zero
- •Оглавление
6.5. Работа с функциями
Все функции, которые вызываются из программы, должны иметь прототип: объявление и текст функции. Объявление может быть в файле основной программы или в любом подключаемом файле, например с помощью директивы препроцессора #include. Например, если не дать директиву #include <math.h> и включить в программу оператор с вызовом функции sqrt() из системной библиотеки:
b = sqrt(а);
после компиляции программы появится сообщение
Compiling LR3.C:
•Warning LR3.C 41: Call to function 'sqrt' with no prototype
Для того чтобы узнать имя головного файла, в котором находится прототип названной функции (например, sqrt), надо получить по ней подсказку. Для этого надо в тексте программы подвести курсор под имя этой функции и ввести команду Ctrl+Fl. На экране появится подсказка с форматом вызова функции, ее назначением и с именем головного файла, в котором находится прототип названной функции. Остается только поместить в файл с программой, содержащей вызов функции (например, sqrt), не имеющей прототипа, директиву с подключением головного файла, в котором содержится ее прототип. Например:
#include <math.h>
После повторной трансляции предупреждение об отсутствии прототипа функции sqrt не появится.
При каждом вызове функции Borland C++ запоминает вызов и передаваемые ей фактические параметры в стеке вызова. Каждый раз во время очередного останова программы при ее трассировке можно запросить стек вызова с помощью команды Ctrl+F3 – опции меню Debug/Call stack (Отладка/Вызов стека). При этом в дополнительное окно выводится список функций, вызванных для выполнения к данному моменту со списками значений фактических параметров. Список функций дается в последовательности, обратной их вызову, т. е. функция, вызванная первой, будет в нижней строке, а вызванная последней – в верхней строке списка.
При выходе из функции ин4юрмация о ней удаляется из стека. Следовательно, для того чтобы видеть фактические параметры функции, надо установить точку останова или остановиться другим способом после входа в функцию.
Если в списке стека выбрать одну из его строк и нажать клавишу Ввод, на экран будет вызван исходный файл с текстом вызванной функции; произойдет автоматический переход в окно редактора, причем курсор будет установлен на строку текста этой функции, операторы которой выполнялись в ней последними.
Просматривать значения фактических параметров можно также при использовании рекурсивных функций.
Во время приостановки выполнения программы можно вызвать на экран текст определения любой активизированной функции пользователя с помощью пункта меню Search/Locate function (Поиск/Местоположение функции). После вызова этого пункта меню на экране появляется дополнительное окно для ввода имени функции. После набора имени требуемой функции и нажатия клавиши Ввод в редактор загружается файл с текстом определения заданной функции и(или) активизируется окно редактора с этой функцией, причем курсор устанавливается на первую строку определения функции, т. е. на заголовок функции. Таким способом можно искать определения функций только после начала выполнения программы, например, после первого выполнения команды F7.