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
> Konstanten.h: No such file or directory
eventuell das die Datei nicht gefunden/geöffnet werden kann.
Gross/Kleinschreibung, Path, schreibfehler?
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...
hab es! es muss noch ne neue zeile am ende des headers eingefügt werden. trotzdem danke für die schnelle antwort.
Viel Spaß, wenn du den Header in zwei verschiedenen Übersetzerläufen benutzt. Ich greife mal vor: 'multiple declaration of constant_array'...
> 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 ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.