我在嵌入式系统上工作 - 而不是Windows系统。
我宣布:
static uint_8 i = 0;
所以我在开始时被定义为0。
问题:重置后我重新定义为0还是在ram地址获得垃圾信息?例如,我是否需要编写一个init函数来将i重新定义为0?
谢谢
答案 0 :(得分:3)
这取决于您的运行时库(如果有)。如果您有一个现有的运行时库,它可能会在启动时将您的静态数据初始化为零(在main()
之前)。但是,某些嵌入式系统可能没有完整的运行时库支持,因此您可能必须自己执行此操作。
答案 1 :(得分:0)
不,你没必要。当程序启动时,所有静态变量都保证初始化为0.
C标准ISO / IEC 9899:TC2通过以下方式对此进行定义。
6.2.4物体的储存持续时间
标识符使用外部或内部链接或使用存储类声明的对象 说明符static具有静态存储持续时间。它的一生就是 程序的整个执行及其存储的值被初始化 程序启动前只有一次。