I was going through the code at http://geeksforgeeks.org/?p=10302
#include<stdio.h>
int initializer(void)
{
return 50;
}
int main()
{
static int i = initializer();
printf(" value of i = %d", i);
getchar();
return 0;
}
This code will not compile in C because static variables need to be initialised before main() starts. That is fine. But this code will compile just fine in a C++ compiler.
My question is why it compiles in a C++ compiler when static has the same usage in both languages. Of course compilers will be different for these languages but I am not able to pin point the exact reason. If it is specified in the standard, I would love to know that.
I searched for this question on SO , found these similar questions:
- Difference between static in C and static in C++??
- Static variables initialisation order
- Static variables in C and C++