Pregunta

La siguiente línea de código, lo que crea una matriz de longitud variable en la pila:

char name[length] = {'\0'};

Genera los siguientes diagnósticos del compilador:

error: variable-sized object may not be initialized
warning: excess elements in array initializer
warning: (near initialization for ‘name’)

¿Qué opciones están disponibles para mí para inicializar VLA? ¿Estoy obligado a usar una línea como:

memset(name, 0, sizeof(name));

En lugar?

¿Fue útil?

Solución

Sí, usted debe escribir código para la inicialización del VLA (que podría ser un memset() como usted ha descrito, o cualquier otra forma que se preocupa a).

Es simplemente una restricción en la norma C (§6.7.8):

  1. El tipo de la entidad a ser inicializado será una matriz de tamaño desconocido o un tipo de objeto que es no una variable de tipo longitud de la matriz.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top