Difference between initialization of static variables in C and C++

后端 未结 3 1526
鱼传尺愫
鱼传尺愫 2020-12-11 00:26

I was going through the code at http://geeksforgeeks.org/?p=10302

#include
int initializer(void)
{
    return 50;
}

int main()
{
    static i         


        
3条回答
  •  执念已碎
    2020-12-11 01:09

    6.7.8/4 [C99]

    All the expressions in an initializer for an object that has static storage duration shall be constant expressions or string literals.

    In static int i = initializer(); the RHS is not a constant expression and so the code doesn't compile in C.

    In C++ there is no such restriction and the code is well-formed in C++.

提交回复
热议问题