【发布时间】:2021-06-25 08:31:10
【问题描述】:
c 语言中的一般问题:
在声明中初始化数据是否安全? 示例:
static unsigned char myVar =5u;
这个值是否会被启动代码覆盖?
【问题讨论】:
-
这很安全,但是如果不看一下“启动代码”,就无法回答您的其他问题。我的意思是,main 或其他方法覆盖这个值是完全合法的。
-
事实上我正在评估两种方法:我在帖子中描述的初始化和使用 init 函数的初始化。哪种方式最安全?
-
你是什么意思,它们都是安全的,但没有什么能阻止你(或你的同事)在声明中将值初始化为
5u,然后在声明中用13u覆盖它main()。只有人的手和糟糕的想法会成为初始化变量的错误来源。 -
您为什么认为它不安全?你也可以问,假设
a在a = 2 + 2;之后包含 4 是否安全。 -
@Jabberwocky 我听说过在
main启动之前可以覆盖全局变量的情况,我相信嵌入式系统中存在一些链接器技巧。我必须四处寻找确认。