Я пытаюсь указать поведение внешних функций, точнее, их завершение. В документации ACSL указано, что свойство \terminates p;
указывает, что если предикат p
имеет место, то функция гарантированно завершается, но ничего не указывает, когда p
не выполняется. Это также объясняет, что функция, которая никогда не возвращает может быть определен:Спецификация ACSL для возможно бесконечной функции C
//@ ensures \false ; terminates \false ;
Кроме того ACSL обеспечивают свойство \exits p;
указать постусловие в случае внезапного прекращения. Поэтому мне интересно, если:
//@ ensures \false ; exits \false; terminates \false ;
будет указывать, что функция всегда работает навсегда?
Кроме того, что делает спецификации:
//@ ensures p ; exits q; terminates \false ;
средства относительно возможного бесконечного цикла?
Благодарим вас за ответ. О ошибке времени выполнения, я думал об этом, но вы не можете рассчитывать на определение RTE, не так ли? О longjump, я думаю, что я могу игнорировать их на данный момент. Еще раз спасибо. – Anne