Inicialización de una matriz de longitud variable dinámicamente de tamaño (VLA) a 0
-
10-10-2019 - |
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?
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):
- 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