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