c warning: l’utilisation de la variable const dans une expression constante est non standard en C

Je reçois cet avertissement lorsque j’essaie d’initialiser un tableau à une taille constante.

# 2170-D L’utilisation d’une variable const dans une expression constante n’est pas standard en C

#file.h typedef struct { // LED Blink Pattern ..... } LEDSeq void addError(LEDSeq); void runLEDErrors(); .... #file.c const uint8_t MAXERRORS = 4; LEDSeq errors[MAXERRORS]; uint8_t errorsLength = 0; .... 

En gros, c’est un peu de code qui va boucler sur les séquences d’erreur de voyants ajoutées pendant l’exécution. Je dois utiliser un tableau de taille fixe car realloc n’est pas disponible dans mon environnement. Le code fonctionne tout. Je me demande simplement pourquoi je reçois cette erreur.

Un object const n’est pas une constante en C mais un object en lecture seule. Un tableau déclaré à la scope du fichier (ou tout tableau ayant une durée de stockage statique) doit avoir une expression constante comme nombre d’éléments.

Ceci est valide:

 #define MAXERRORS 4 LEDSeq errors[MAXERRORS];