【问题标题】:Static Redefine after reboot of embedded System C嵌入式系统 C 重启后的静态重新定义
【发布时间】:2012-07-30 02:08:07
【问题描述】:

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

我声明:

static uint_8 i = 0;

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

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

谢谢

【问题讨论】:

    标签: c variables static reset


    【解决方案1】:

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

    【讨论】:

    • 谢谢你让我看起来像个傻瓜!我问“我们有运行时库吗?因为应该重新定义静态库” - 不,我们的系统中没有这个库。所以现在我要开始写那个初始化函数了!
    • 太好了,听起来很有趣。到过那里! :)
    【解决方案2】:

    不,您不必这样做。所有静态变量保证在程序启动时初始化为0。

    C 标准 ISO/IEC 9899:TC2 对此进行了如下定义。

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

    【讨论】:

      猜你喜欢
      • 2011-01-14
      • 2011-09-16
      • 1970-01-01
      • 2018-05-16
      • 2014-02-20
      • 2016-03-28
      • 2013-06-16
      • 2011-05-29
      • 2015-12-27
      相关资源
      最近更新 更多