У меня есть переменная stati c "init" для запуска функции один раз при запуске, (RTOS) , но, похоже, она инициализируется случайным значением. Если я удаляю тег stati c, все отлично работает. (За исключением очевидной проблемы, связанной с запуском функции init при каждом проходе.) Может ли кто-нибудь дать более полное представление о том, почему это не работает или, возможно, лучший способ добиться этого?
Пример кода:
void ManageStructures()
{
// Variable declarations/definitions
static uint8_t StructInitialized;
// Have also tried "static uint8_t StructInitialized = 0", neither worked
// Function prototypes
void InitStruct();
if (!StructInitialized)
{
StructInitialized= 1;
InitStruct();
}
Test = StructInitialized;
edit : Прошу прощения за недостаток информации. Это для компании, и я стараюсь не выходить за рамки нашей общедоступной информационной политики. MCU - это серия STM32F7, использующая набор инструментов «Ac6 STM32 MCU G CC». Я не очень разбираюсь в операциях с компилятором, поэтому мне может потребоваться больше времени, чтобы найти ответы на вопросы, связанные с компилятором или make-файлом.
edit : стало ясно, что это проблема с скрипты компилятора или компоновщика, а не мой код. При этом стало совершенно очевидно, что мне нужно больше узнать о наборах инструментов, сценариях компоновщика и компиляторах в целом, прежде чем перейти к root этой проблемы. Я вернусь к этому вопросу, как только стану достаточно знакомым, чтобы дать ценный отзыв или ответить на него сам. Спасибо всем за отзывы и направление!