initializing static variable with a function call gives compilation error?

后端 未结 3 730
醉话见心
醉话见心 2020-12-19 04:52
#include 
int foo(){
    return 1;
}
int main(void) {
    static int q = foo(); 
    return 0;
}

Here is a link for the same. This i

3条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-19 05:25

    Global and static variables can only be initialized with constant expressions known at compile time. Calling your foo() function does not constitute using a constant expression. Further, the order in which global and static variables are initialized is not specified. Generally, calling foo() would mean that there must be a certain order, because the function can reasonably expect some other variables to be already initialized.

    IOW, in C, neither of your code is executed before main().

    In C++ there are ways around it, but not in C.

提交回复
热议问题