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
aah, jo klar. blöder fehler. jetzt kommt noch die meldung
Konstanten.h:16:9: warning: no newline at end of file
also das bezieht sich wieder auf die header datei.
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...
> 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
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.
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 ...