Tableaux de taille variable

En C90, la taille d'un tableau doit être constante. Même une déclaration aussi simple que la suivante est refusée par la norme (même si GCC l'accepte par défaut) :

const int S = 42;

int main() {
    int T[S];
    // ...
}

(Le programme redevient correct si on utilise #define S 42 à la place du const int).

En C99, la taille des tableaux n'est plus nécessairement connue à la compilation, même si elle doit bien sûr être connue à l'instanciation du tableau. Le programme ci-dessus est autorisé, de même que :

void f(int m) {
    int T[m]; // instanciation d'un tableau de taille m
    // ...
    int T2[T[42]];
}



Matthieu Moy 2017-02-08