const array in header auslagern

Gast #1271810
Lesenswert?
• ▲
▼
hi leute,

ich habe nen PIC32 uC und möchte ein constant int array mit einigen 
tausend Werten in eine header datei auslagern.

mein quelltext sieht wie folgt aus:

#ifndef _KONSTANTEN_H
#define _KONSTANTEN_H

// Testarray
const int constant_array[10] = {0,1,2,3,4,5,6,7,8,9};

#endif

die entsprechende header datei binde ich über #include in der main.c 
ein, der compiler gibt jedoch diese fehlermeldung aus:

Konstanten.h: No such file or directory

kennt jemand den grund dafür?

danke und grüße
Gast #1271942
Lesenswert?
• ▲
▼
DEFINITIONEN GEHÖREN NICHT IN EINEN HEADER.
Die gehören in eine C-Datei, in den Header gehört lediglich die 
Deklaration (mit 'extern').

> Konstanten.h:16:9: warning: no newline at end of file
Da kommst du nie drauf, was das bedeutet...
#1272265
Lesenswert?
• ▲
▼
> DEFINITIONEN GEHÖREN NICHT IN EINEN HEADER.
> Die gehören in eine C-Datei, in den Header gehört lediglich die
> Deklaration (mit 'extern').

Meiner Meinung nach gehören die sehr wohl da hin, oder wo kommen Deine 
"#defines" häufiger vor?

> Viel Spaß, wenn du den Header in zwei verschiedenen Übersetzerläufen
> benutzt.

Das Problem verhindert ja das #ifndef ....

Grüße,
Michael
Gast #1272267
Lesenswert?
• ▲
▼
Michael K. schrieb:
>> DEFINITIONEN GEHÖREN NICHT IN EINEN HEADER.
>> Die gehören in eine C-Datei, in den Header gehört lediglich die
>> Deklaration (mit 'extern').
>
> Meiner Meinung nach gehören die sehr wohl da hin, oder wo kommen Deine
> "#defines" häufiger vor?
Ich hab mich hier an K&R, dt. Übersetzung gehalten.
Definition: Vereinbarung, die Speicherplatz belegt.
Deklaration: Vereinbarung, die keinen Speicherplatz belegt (typedef, 
struct und so weiter).

#define ist (bei mir) nichts von beiden, es ist primitiver Textersatz 
durch den Präprozessor.


>> Viel Spaß, wenn du den Header in zwei verschiedenen Übersetzerläufen
>> benutzt.
>
> Das Problem verhindert ja das #ifndef ....
Nein, tut es leider nicht. Wenn du zwei C-Dateien nacheinander 
übersetzt, die beide diese Headerdatei einbinden, wird der Linker sich 
in jedem Fall beschweren.
#1272269
Lesenswert?
• ▲
▼
Sven P. schrieb:
> Michael K. schrieb:
>>> DEFINITIONEN GEHÖREN NICHT IN EINEN HEADER.
>>> Die gehören in eine C-Datei, in den Header gehört lediglich die
>>> Deklaration (mit 'extern').
>>
>> Meiner Meinung nach gehören die sehr wohl da hin, oder wo kommen Deine
>> "#defines" häufiger vor?
> Ich hab mich hier an K&R, dt. Übersetzung gehalten.
> Definition: Vereinbarung, die Speicherplatz belegt.
> Deklaration: Vereinbarung, die keinen Speicherplatz belegt (typedef,
> struct und so weiter).

ok, da stimme ich mit überein.

>
> #define ist (bei mir) nichts von beiden, es ist primitiver Textersatz
> durch den Präprozessor.
>
>
>>> Viel Spaß, wenn du den Header in zwei verschiedenen Übersetzerläufen
>>> benutzt.
>>
>> Das Problem verhindert ja das #ifndef ....
> Nein, tut es leider nicht. Wenn du zwei C-Dateien nacheinander
> übersetzt, die beide diese Headerdatei einbinden, wird der Linker sich
> in jedem Fall beschweren.

stimmt ... Punkt für Dich ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren