我有一个静态的“init”变量,可以在启动时运行一次函数(RTOS),但它似乎初始化为一个随机值。如果我删除静态标签,一切正常。(除了它每次通过都运行 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;
Run Code Online (Sandbox Code Playgroud)
编辑:对于缺乏信息,我深表歉意。这是针对一家公司的,我正在努力遵守我们的公共信息政策。MCU是STM32F7系列,使用“Ac6 STM32 MCU GCC”工具链。我不太精通编译器操作,所以我可能需要更长时间才能找到编译器或 makefile 相关问题的答案。
编辑:很明显,这是编译器或链接器脚本的问题,而不是我的代码。话虽如此,但在找到这个问题的根源之前,我需要更多地了解工具链、链接器脚本和编译器,这一点也变得非常清楚。一旦我足够熟悉可以提供有价值的反馈或自己回答这个问题,我就会回到这个问题。谢谢大家的反馈和指导!