Background Image
Previous Page  17 / 22 Next Page
Information
Show Menu
Previous Page 17 / 22 Next Page
Page Background

Рис. 1. Схема построения отчета при использовании резюме вложенного вызова

функции (поток управления внутри функции показан сплошными линиями,

отношение отложенной проверки в заданном узле — штрихпунктирной, трасса

построения отчета — пунктирной)

9 close_file(flag, file);

10 }

11

12 void double_close(FILE *file) {

13 fclose(file);

14 potential_double_close(true, file);

15 }

Резюме функции

close_file( )

аналогично предыдущему случаю. Ре-

зюме функции

potential_double_close( )

состоит из двух ветвей: в пер-

вой ветви (flag

false) никакой дополнительной информации не хра-

нится, во второй (flag

true) имеется отложенная проверка события

закрытия файла, содержащая ссылку на узел № 4 графа выполне-

ния функции

close_file( )

. В качестве точки отложенной проверки для

функции

potential_double_close( )

и в качестве целевого узла указыва-

ется не узел применения резюме, а его предшественник. Это выпол-

няется для упрощения, поскольку узел применения резюме на момент

сохранения информации еще не создан (сохранение информации про-

веряющих модулей является одним из действий по его созданию, и

к этому моменту проведены не все действия по применению резю-

ме), но информация об узле предвызова и целевом узле вызываемой

функции позволяет однозначно идентифицировать ветвь резюме (или

группу ветвей), затрагиваемую при прохождении пути до заданной

ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2015. № 5 91