4

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

我声明:

static uint_8 i = 0;

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

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

谢谢

4

2 回答 2

3

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

于 2012-08-01T07:55:37.127 回答
0

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

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

6.2.4 对象的存储持续时间
一个对象,其标识符通过外部或内部链接或存储类说明符 static 声明的对象具有静态存储持续时间。它的生命周期是程序的整个执行过程,它的存储值只在程序启动之前初始化一次。

于 2012-08-01T07:55:59.900 回答