He mirado en éstos y que no responde a mi pregunta:gcc se queja: objeto de tamaño variable no puede ser inicializado
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?
soy tratando de escribir algún código bastante portable c
:
int main()
{
const int foo=13;
int bar[foo]={0};
return 0;
}
me sale un error al compilar variable-sized object may not be initialized
como c
código utilizando:
- gcc 4.3.4
- brazo-linux-gcc 4.4.5 gnueabi-
Y si lo compilo como c
en VS2008 me sale un poco diferente error C2057: expected constant expression
entiendo que aquí, el compilador c
código no está reconociendo const int foo=13;
ser verdaderamente constante; por ejemplo, podríamos tener
void a(int fool)
{
const int foo=fool;
int bar[foo]={0};
}
también darse cuenta de que unlike the gcc compilers, el compilador VS2008 no tiene concepto de C99 variable-length arrays. Y ese MS aparentemente no ha mencionado ningún soporte futuro.
Y, sin embargo, cpp
compilación de código, ya sea con gcc o MS compiladores es totalmente diferente/más inteligente?!
Y también lo que no entiendo con respecto a la gccc
compilador de código es:
- desde this codehace de compilación,
- qué this codeno compilación ..
- y sin embargo this codequé compilar?
(NB: en este último caso, MSc
compilación de código falla; consistentemente como con int bar[foo]={0};
)
En mi TDM-GCC 4.6.1 el último ejemplo no ** compila ** (de nuevo con "objeto de tamaño variable no puede ser inicializado"). Tampoco había oído nunca que los VLAs se inicializaran con una lista de inicializadores, ¿es esto correcto C? Investigándolo ... – Anthales
Para la parte de su pregunta sobre los compiladores de MS, esta no es la única característica que falta, simplemente no son compatibles con C99. Desde el año pasado, incluso hay una versión más nueva del estándar, C11, por lo que ahora carecen de 2 versiones principales. –
@ [anthales] (http://stackoverflow.com/users/1250595/anthales), gracias. hmm .. – violet313