C 中 local static 变量初始化是零开销的吗

查看 47|回复 1
作者:iqoo   
如下代码,第一次调用 fn 时会执行 get_value ,后续调用不会执行:
void fn() {
    static int x = get_value();
    // ...
}
如果代码里显示调用该函数,编译器可能会优化,在第一次调用前初始化。
但如果通过函数指针动态调用,或者将该函数对外导出,那么每次调用 fn 时是否都要判断一下有没有初始化?

调用, 函数, Static, get_value

BingoXuan   
op 的例子编译出错,initializer element is not constant 。
不如改成
static int x;
static int is_initialized = 0;

if (!is_initialized) {
x = get_value();
is_initialized = 1;
}
您需要登录后才可以回帖 登录 | 立即注册

返回顶部