2 Stimmen

C-Array vordefinieren

In C kann ich bei der Definition eines Arrays Folgendes tun:

int arr[] = {5, 2, 9, 8};

Und so definierte ich es und füllte es auf, aber wie definiere ich es in meiner .h-Datei, und dann füllen Sie es in meinem .c?

Zum Beispiel etwas tun wie

int arr[];
arr = {5, 2, 9, 8};

Ich bin ziemlich neu in C, nicht sicher, wie es aussehen würde

Irgendwelche Vorschläge?

0 Stimmen

Welchen Sinn hat es, sie in einer .h zu definieren und sie dann in der .c zu deklarieren? Wenn Sie nur eine .c haben, definieren/deklarieren Sie sie einfach dort. Wenn Sie es zwischen .c-Dateien teilen müssen - erwähnen Sie das auch in Ihrer Frage (nur zur Klarheit, es wurde von einigen angenommen, die die Frage bereits beantwortet haben)

9voto

Jerry Coffin Punkte 452852

Normalerweise würden Sie das tun:

extern int arr[];

In der .h-Datei, und:

int arr[] = { 5, 2, 9, 8};

In der .c-Datei.

Bearbeiten: Dale Hagglund und KevinDTimm werfen gute Punkte auf: Sie wollen nur die Initialisierung in eine .c-Datei, und Sie müssen nur die alles in der .h-Datei, wenn Sie auf arr aus Code in mehr als einer .c-Datei.

1 Stimmen

Wenn Ihr Programm mehrere C-Dateien hat, stellen Sie sicher, dass nur eine das Array definiert, d.h. die zweite Zeile oben enthält. Die anderen brauchen es nur zu deklarieren, indem sie die .h Datei mit extern int arr[];

0 Stimmen

Ich würde die Notwendigkeit einer Definition in der .h-Datei in Frage stellen, es sei denn, es findet eine gemeinsame Nutzung statt. Vielleicht zeigen die OP in diese Richtung?

0voto

Michael Dorgan Punkte 12265

Sie können Include-Guards verwenden, um zu verhindern, dass die Zuweisung mehrfach erfolgt, aber die Zuweisung in Header zu setzen ist meiner Meinung nach eine sehr schlechte Praxis. Legen Sie die Intialisierung in einer c-Datei, in einer init-Funktion statt und extern das Array in der h-Datei.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X