Comment déclarer extern 2d-array en en-tête?

Nous avons cette déclaration dans LCD.c:

unsigned char LCD[8][64] = {((unsigned char) 0)}; 

Et dans LCD.h, nous voulons avoir quelque chose comme:

 extern unsigned char LCD[][]; 

Nous avons cette erreur:

 Error[Pe098]: an array may not have elements of this type 

Vous devez au minimum inclure la taille de colonne la plus à droite pour un tableau 2D. Vous pouvez le déclarer comme ceci:

 extern unsigned char LCD[][64]; 

Sinon, le compilateur ne pourrait pas calculer le décalage après la première ligne.

En C, un tableau ne contient pas d’informations sur la taille de chacune de ses dimensions. Par conséquent, le compilateur doit savoir quelle est la taille de chacune des dimensions, à l’exception de la première. Donc, pour corriger cette situation, faites quelque chose comme ceci:

LCD.h:

 #define MINOR 64 extern unsigned char LCD[][MINOR]; 

LCD.c:

 unsigned char LCD[8][MINOR] = {((unsigned char)0)}; 

(EDIT: désolé, j’ai tout gâché au début, je l’ai corrigé maintenant.)

Essayez de spécifier les dimensions du tableau. En C pour un tableau multidimensionnel, une seule dimension peut être laissée non spécifiée.

Comme ça:

 extern unsigned char LCD[][64]; 

Avec les tableaux multidimensionnels, toutes les dimensions sauf la première doivent être spécifiées. Alors…

 extern unsigned char LCD[][64]; 

Devrait le faire.

Ajoutez au fichier d’en-tête une déclaration comme:

 extern unsigned char LCD[8][64]; 

sizeof of LCD array sera refusé si vous ne définissez pas la taille des deux dimensions!

 sizeof refused : extern unsigned char LCD[][64]; sizeof accepted : extern unsigned char LCD[8][64]; 

cela dépend de ce que vous voulez!