当前位置:  开发笔记 > 编程语言 > 正文

在C本地范围内使用static关键字来运行

如何解决《在C本地范围内使用static关键字来运行》经验,为你挑选了1个好方法。

这两个有什么不同吗?如果是这样,究竟有什么区别?假设它们处于可以被多次调用的C函数中.

    在同一声明中声明和分配

    static uint32_t value = x; // x varies and may be passed into function.

    在一个陈述中声明并在下一个陈述中指定.

    static uint32_t value;

    value = x; // x varies;

难道value只更新其声明/初始化或者甚至在后续调用的第一次.

我对(1)的理解是它只是第一次执行该行,所以即使x下次执行该行时更改,value也将保持不变.我不确定(2)但对两者的澄清将非常有帮助

编辑:编译器ARM(ADS1.20).编辑:关于(2)从目前为止给出的答案的后续问题.是在每次通话还是第一次重复声明(不是作业)?



1> Jonathan Lef..:

第一个不应该编译; 静态变量需要一个常量初始化器.

value每次调用函数时都会设置第二个,因此无需首先进行调用static.

如果第一个表示法是正确的 - 初始化value为1,比如说 - 那么它将在程序启动时初始化一次,然后在代码改变它时仅采用新值.第二种表示法仍然设置value每次调用函数,因此使用static无意义.(好吧,如果你足够努力,你可以设计第二个版本用于静态的场景.例如,如果函数返回指向其他代码然后修改的指针,那么可能需要它,但那是在极端的深奥,将是一个非常糟糕的"代码味道".)

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有