Wie definiert man ein Array von Zeichenfolgen in der Header-Datei?

8

Ich habe viele verschiedene 3-Achsen-Sensoren, für die ich Testcode schreibe. In den C-Dateien für jede von ihnen habe ich die gleiche Zeichenkette definiert:

%Vor%

was ich benutze, wenn ich "für" Schleife Ergebnisse zum Drucken der Achse, die wie folgt versagt:

%Vor%

Ich dachte, um etwas Platz zu sparen, könnte ich ein Zeichenfolgenarray in einer Header-Datei definieren, um überall zu verwenden.

Ich habe eine Menge Dinge ausprobiert, aber ich kann anscheinend kein Array von Strings in meiner Header-Datei definieren, die ich durchlaufen kann, um eine Kompilierung zu bestehen.

    
user1054210 08.02.2012, 15:56
quelle

5 Antworten

10

Um Linker-Fehler zu vermeiden, müssen Sie Ihr Array als extern in einer Header-Datei deklarieren und dann das Array einmal in einem Ihrer Code-Module definieren.

Also zum Beispiel:

%Vor%

dann in einem anderen Codemodul irgendwo:

%Vor%     
Jason 08.02.2012, 16:00
quelle
19

Wenn Sie es in eine Header-Datei einfügen müssen, verwenden Sie extern oder static :

%Vor%

Extern teilt dem Linker mit, dass eine globale Variable namens axis in einer unserer Implementierungsdateien definiert ist (d. h. in einer .c -Datei), auf die ich hier verweisen muss.

static dagegen sagt dem Compiler das Gegenteil: Ich muss in der Lage sein, diese Variable zu sehen und zu verwenden, aber sie nicht in den Linker exportieren, so dass sie nicht extern oder referenziert werden kann Namenskonflikte verursachen.

    
Richard J. Ross III 08.02.2012 16:01
quelle
2

Fügen Sie dies in Ihre Header-Datei

ein %Vor%

und behalten Sie dies in einer C-Datei:

%Vor%     
dasblinkenlight 08.02.2012 16:01
quelle
2

Fügen Sie dies Ihrer Kopfzeile hinzu:

%Vor%

Fügen Sie diese eine Quelldatei in Ihrem Projekt hinzu:

%Vor%     
Robᵩ 08.02.2012 16:01
quelle
0

Michael Barr (Netrino) rät von der Angabe der Speicherung in einer Header-Datei ab. In ähnlicher Weise duldet der eingebettete Systemcodierungsstandard von Netrino die Verwendung von externem Speicher in Kopfzeilen nicht.

Im Allgemeinen stimme ich diesen Prinzipien zu, und ich habe herausgefunden, dass es eine gute Idee ist, Speicher in die C-Dateien zu integrieren, die sie benötigen, und nur diese.

    
Throwback1986 08.02.2012 16:17
quelle

Tags und Links