Допущения о main Функция

Программа на C/C + +, которая компилируется в полный исполняемый файл, содержит main функция. Анализ Code Prover обрабатывает main функция отличается от других функций.

main Функция как верхняя часть иерархии вызовов

Code Prover рассматривает main функционирует как начальная точка верификации. Если вы не предоставляете main функция, например, при проверке библиотеки, верификация генерирует одну. По умолчанию сгенерированный main вызывает функции, которые больше нигде не вызываются.

Затем верификация выполняется из main функция далее в функции, вызываемые из main и так далее вниз по иерархии вызовов.

Чтобы настроить время верификации или точность:

  • Можно изменить содержимое сгенерированной main использование опций анализа.

    Смотрите Код Верификации Prover.

  • Вы можете писать свои собственные main функция, которая вызывает только те функции, которые вы хотите проверить.

main Аргументы функции

The main функция может иметь одну из трех форм:

  • Форма без аргументов:

    int main() {}
  • Форма с двумя аргументами:

    int main(int argc, char* argv[]) {}
  • Любая другая форма, определяемая реализацией.

В соответствии со спецификациями C/C + + Standard, верификация делает определенные предположения на main аргументы функции. Если на main функция имеет аргументы с типами данных, которые совпадают со второй формой, Code Prover принимает эту форму и накладывает соответствующие ограничения на аргументы. В частности:

  • Если первый аргумент main функция является целым числом (или typdef в целое число), верификация принимает, что аргумент неотрицателен. Этот аргумент обозначает количество дополнительных аргументов в программу от ее внешнего окружения.

    Предположение верно, даже когда main функция имеет только один этот аргумент.

  • Если первый аргумент является целым числом, а второй аргумент является указателем на указатель (или typedef для одного), верификация принимает, что второму аргументу выделяется буфер размера, равный первому аргументу argc. Каждый элемент буфера, argv[0], argv[1], …, argv[argc-1] также принято, что это инициализированный указатель. Этот аргумент хранит дополнительные аргументы к программе из ее внешнего окружения.

Похожие темы