gcc 4.4.3 C89la taille allocation Initializing d'un tableau
Je me demande pourquoi je ne peux pas affecter la taille du tableau lors de l'initialisation d'un tableau de pointeurs sur des caractères.
je reçois l'erreur suivante:
variable-sized object may not be initialized
Cela fonctionne bien. Cependant, sizeof de retournera 4 octets en tant que char * a une taille de 4 octets. Ce qui n'est pas bon, car ce n'est pas la taille réelle que je veux.
void inc_array(const char * const src, size_t size)
{
/* Array of pointers */
char *dest[sizeof(src)] = {0};
}
Cependant, c'est ce que je veux faire est de passer la taille réelle et l'utiliser pour initialiser la longueur de la matrice.
void inc_array(const char * const src, size_t size)
{
/* Array of pointers */
char *dest[size] = {0};
}
Quelle est la différence quand sizeof de renvoie un size_t et que je passe un size_t?
Un grand merci pour toutes les suggestions,
Oui, vous avez raison. Je viens de tester ça. – ant2009
donc VLA sont parfaitement acceptables c'est seulement quand vous essayez et initialisez-les. J'ai marqué cela comme correct, car c'est la vraie raison pour laquelle j'ai eu cette erreur. Merci. – ant2009
@robUK: Ils sont acceptables dans la norme C actuelle et comme extension gcc à l'ancienne norme C. – caf