Wie erklären extern 2d-array im header?
Wir haben diese Erklärung in der LCD-Anzeige.c:
unsigned char LCD[8][64] = {((unsigned char) 0)};
Und LCD.h wir wollen so etwas wie:
extern unsigned char LCD[][];
Bekommen wir diese Fehlermeldung:
Error[Pe098]: an array may not have elements of this type
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie, mindestens, enthalten die meisten der rechten Spalte die Größe für ein 2-D array. Können Sie erklären es wie folgt:
Sonst würde der compiler nicht in der Lage sein zu berechnen, den offset nach der ersten Zeile.
In C ein array enthält keine Informationen über die Größe der einzelnen Dimensionen. Daher muss der compiler wissen, wie groß ist jede der Dimensionen außer der ersten. Also, um diese situation zu korrigieren, tun Sie etwas wie dieses:
LCD.h:
LCD.c:
(EDIT: sorry, ich Durcheinander die Dinge am Anfang, es jetzt behoben.)
#include "LCD.h"
inLCD.c
(soMINOR
makro definiert ist, die nur einmal in der header-Datei), um auszuschließen, die Möglichkeit von Konflikt stehende Typen fürLCD
zwischen Deklaration und definition (was nicht erkannt wird, wie Kompilierungsfehler, wenn Sie in verschiedenen Dateien und linker-Fehler als auch).Versuchen Sie, die Dimensionen des Arrays. In C für ein mehrdimensionales array nur eine dimension nicht angegeben.
Wie diese:
Mit mehrdimensionalen arrays, alle, aber die erste dimension angegeben werden muss. So...
Sollte es tun.
Hinzufügen der header-Datei, eine Erklärung, wie:
sizeof des LCD-array wird abgelehnt, wenn Sie nicht definieren, die Größe der beiden dimension !
es abhängen, was Sie wollen !