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};
)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…