这两个有什么不同吗?如果是这样,究竟有什么区别?假设它们处于可以被多次调用的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)从目前为止给出的答案的后续问题.是在每次通话还是第一次重复声明(不是作业)?
Jon*_*ler 11
第一个不应该编译; 静态变量需要一个常量初始化器.
value每次调用函数时都会设置第二个,因此无需首先进行调用static.
如果第一个表示法是正确的 - 初始化value为1,比如说 - 那么它将在程序启动时初始化一次,然后在代码改变它时仅采用新值.第二种表示法仍然设置value每次调用函数,因此使用static无意义.(好吧,如果你足够努力,你可以设计第二个版本用于静态的场景.例如,如果函数返回指向其他代码然后修改的指针,那么可能需要它,但那是在极端的深奥,将是一个非常糟糕的"代码味道".)
| 归档时间: |
|
| 查看次数: |
6276 次 |
| 最近记录: |