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

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.

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