I've looked at these and they do not answer my question:
variable-sized object may not be initialized
C compile error: "Variable-sized object may not be initialized"
Error: Variable-sized object may not be initialized. But why?
I am trying to write some fairly portable c code:
int main ()
{
const int foo=13;
int bar[foo]={0};
return 0;
}
I get a variable-sized object may not be initialized error when compiling as c code using either:
- gcc 4.3.4
- arm-linux-gnueabi-gcc 4.4.5
And if i compile it as c in VS2008 i get a slightly different error C2057: expected constant expression
I understand that here, the c code compiler is not recognising const int foo=13; to be truely constant; for example we might have
void a(int fool)
{
const int foo=fool;
int bar[foo]={0};
}
I also realise that unlike the gcc compilers, the VS2008 compiler has no concept of C99 variable-length arrays. And that MS apparently has not mentioned any future support.
And yet, cpp code compilation with either gcc or MS compilers is altogether different/cleverer ?!
And also what i do not understand regarding the gcc c code compiler is:
(NB: in this last case, MS c code compilation fails; consistently as with int bar[foo]={0};)