重新启动嵌入式系统C后静态重新定义

时间:2012-08-01 07:51:26

标签: c variables static reset

我在嵌入式系统上工作 - 而不是Windows系统。

我宣布:

static uint_8 i = 0;

所以我在开始时被定义为0。

问题:重置后我重新定义为0还是在ram地址获得垃圾信息?例如,我是否需要编写一个init函数来将i重新定义为0?

谢谢

2 个答案:

答案 0 :(得分:3)

这取决于您的运行时库(如果有)。如果您有一个现有的运行时库,它可能会在启动时将您的静态数据初始化为零(在main()之前)。但是,某些嵌入式系统可能没有完整的运行时库支持,因此您可能必须自己执行此操作。

答案 1 :(得分:0)

不,你没必要。当程序启动时,所有静态变量都保证初始化为0.

C标准ISO / IEC 9899:TC2通过以下方式对此进行定义。

  

6.2.4物体的储存持续时间
  标识符使用外部或内部链接或使用存储类声明的对象   说明符static具有静态存储持续时间。它的一生就是   程序的整个执行及其存储的值被初始化   程序启动前只有一次。