Wie Sie richtig schreiben, Erklärungen von extern-arrays (und double-arrays) in C header-Dateien?
Angenommen, ich möchte ein globales array von Daten in meinem Programm, zum Beispiel:
int lookup_indexes[] = { -1, 1, 1, -1, 2, 1, 1, -2, 2, 2, -1, 1, 1, 2 };
Was ist die richtige extern
Erklärung für dieses array in der C-header-Datei?
Auch was über ein array wie dieses:
int double_indexes[][5] = { { -1, 1, 1, -1, 1 }, { 2, -2, 2, 1, -1 } };
In meiner header-Datei habe ich versucht, dieses:
extern int lookup_indexes[];
extern int double_indexes[][5];
Aber dies führt zu compiler-Fehler:
water.h:5: error: array type has incomplete element type
Ich kann ' T es herausfinden.
Dank, Boda Cydo.
- Können Sie nach dem Inhalt
water.h
mindestens bis zur Linie 5 und zeigen, welche Zeile den Fehler verursacht. - Charles, es ist #ifndef, #define, ein Zeilenumbruch und die
extern int lookup_indexes[];
(4. Zeile) undextern int double_indexes[][5];
(5. Zeile). - er meinte, um es in Ihrer Frage. Fügen Sie einfach es.
- stackoverflow.com/questions/3071890/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese link beschreibt die Probleme mit arrays und Größen verwendet als extern deklariert werden und wie Sie zu verwalten.
definieren eine manifest-Konstante für die Größe, so dass es verwendet werden kann, konsequent in die definition und die extern-Deklaration
Den code, den Sie geschrieben sieht gut zu mir und kompiliert (
gcc -std=c99 -pedantic
undgcc -std=c90 -pedantic
) auf meinem Rechner. Haben Sie Kopie-aufgeklebt, diese Zeilen könnte oder Sie haben einen Tippfehler in Ihrem realen header?Beispiel Tippfehler, die dazu führen, dass die Fehler (Reine Vermutung):