That syntax may be valid for C99 compliant code, but is not valid for earlier versions of C. I believe GCC supports the C99 standard. The Microsoft compiler likely doesn't, especially if you're using Visual Studio 6, which I believe was released around 1998 or so (according to the about box anyway). So, neither compiler is necessarily wrong - they just support different versions of the C standard.
Thanks Lyle.
MSVC++ 7.0 is the same as 6.0 - I don't have anything later than that to test with.
So ... with MS compilers, I presume I have to allocate dynamically - ie if I'm not prepared to declare with a constant expression. (Could someone let me know if there's some other workaround.)
Cheers, Rob