Глобальной переменной не присваивается значение в разделе инициализации программы
Эта проверка определяет, всем ли неконстатическим глобальным переменным (и локальным статическим переменным) явно присвоено значение при объявлении или в разделе кода, обозначенном как код инициализации.
Чтобы указать конец кода инициализации, вы вводите линию
#pragma polyspace_end_of_init
main
функция. Код инициализации начинается с начала main
и продолжается до этой прагмы. Чтобы включить эту проверку, используйте опцию Check that global variables are initialized after warm reboot (-check-globals-init)
.Проверка глобальной переменной:
Красный, если переменная вообще не инициализирована, либо явным образом при объявлении, либо в коде инициализации (или инициализируется в мертвом коде в коде инициализации).
Оранжевый, если переменная не инициализирована на определенных путях выполнения через код инициализации. Например, переменная инициализируется в if
ветвь условного оператора, но не else
ветвь.
Зеленый, если переменная всегда инициализируется, когда код инициализации завершает выполнение.
При теплой перезагрузке, чтобы сэкономить время, сегмент данных программы, который может удерживать значения переменных от предыдущего состояния, не загружается. Вместо этого программа должна явным образом инициализировать все неконст- переменные перед выполнением. Эта проверка проверяет, что все неконстатные глобальные переменные действительно инициализированы при теплой перезагрузке.
Просмотрите все образцы неинициализированной или, возможно, неинициализированной переменной на панели Variable Access (или панели Global Variables в Polyspace® Доступ к веб-интерфейсу). Посмотрите, происходит ли какая-либо из ссылок перед прагмой polyspace_end_of_init
встречается.
См. также раздел «Переменный доступ».
Группа: Поток данных |
Язык: C |
Акроним: GLOBAL_SET_AT_INITIALIZATION |