关于静态局部变量的澄清

Clarification regarding Static local variables

本文关键字:局部变量 静态 于静态      更新时间:2023-10-16

在链接存储类规范中

在主题下静态本地变量我读过

在块范围内声明的带有指定静态的变量具有静态存储持续时间,但初始化了第一次控制通过其声明(除非其初始化为零或常量性定位化,否则可以在首先输入块之前执行)。

我不明白这是什么意思:

可以在之前先执行首先输入块

plus,可以说 static 本地变量有没有链接

如有必要,您可以扔一些例子吗?谢谢

相关部分是当启动值已知时。
当已知额外的保证在首次执行该块之前不会更改时。

以下是一些示例的代码。

int foo(void);
void bar(void)
{
    static int ZeroInit;     // zero init
    static int a = 0;        // constant init
    static int b = 4;        // constant init
    // values for above inits are known at start of runtime and even earlier
    static int c = foo();
    // dynamic init, value unknown before execution of foo(),
    // which cannot (i.e. is defined not to) be done before executing the block
    /* code */
}