Inizializzazione di una variabile dinamicamente dimensioni lunghezza Array (VLA) a 0
-
10-10-2019 - |
Domanda
La seguente riga di codice, che crea una matrice di lunghezza variabile sullo stack:
char name[length] = {'\0'};
genera i seguenti diagnostica del compilatore:
error: variable-sized object may not be initialized
warning: excess elements in array initializer
warning: (near initialization for ‘name’)
Quali opzioni sono disponibili per me per inizializzare i VLA? Sono costretto ad utilizzare una linea come ad esempio:
memset(name, 0, sizeof(name));
Invece?
Soluzione
Sì, è necessario scrivere il codice per l'inizializzazione del VLA (che potrebbe essere un memset()
come avete descritto, o in qualsiasi altro modo che si cura di).
E 'semplicemente un vincolo nello standard C (§6.7.8):
- Il tipo di entità da inizializzare è un array di dimensioni sconosciute o un tipo di oggetto che è Non un tipo matrice di lunghezza variabile.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow