Question

La ligne suivante de code, ce qui crée un tableau de longueur variable sur la pile:

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

Génère les diagnostics du compilateur suivants:

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

Quelles sont les options disponibles pour moi pour initialiser VLA? Suis-je obligé d'utiliser une ligne telle que:

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

Au lieu?

Était-ce utile?

La solution

Oui, vous devez écrire le code pour l'initialisation de VLA (qui pourrait être un memset() comme vous avez décrit, ou de toute autre manière que vous vous souciez à).

Il est tout simplement une contrainte dans la norme C (§6.7.8):

  
      
  1. Le type de l'entité à initialiser est un tableau de   taille inconnue ou un type d'objet qui est   pas un type de tableau de longueur variable.
  2.   
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top