Hallo, ich habe hier vor mir gerade ein Projekt für mehrere Atmegas, die über einen Bus kommunizieren sollen. Das bedeutet, dass ich für jeden Atmega ein eigenständiges Programm warten muss. Diese Wartung muss wahlweise auf zwei unterschiedlichen Windows und einem Linuxrechner erfolgen können. Nun besteht das Problem, dass sich die Arbeitsverzeichnisse bei jedem Rechner ändern können und es sehr mühseelig ist, bei jedem Rechnerwechsel zunächst in allen Programmteilen die includes mit dem richtigen Verzeichnis zu versehen. Gibt es eine Möglichkeit, dieses über den Präprozessor abwickeln zu lassen nach der Art: #define WINDOWSRECHNER //#define LIUXRECHNER #ifdef WINDOWSRECHNER #define VERZEICHNIS C:/PROGRAMMIERUNG/PROJEKTabc #endif #ifdef LINUXRECHNER #define VERZEICHNIS /home/PROGRAMMIERUNG/PROJEKabc #endif ... Und dann in jeder Unterdatei: ... #include "VERZEICHNIS/unterprogramm1.c" #include "VERZEICHNIS/unterprogramm2.c" ... So funktioniert es nicht, aber vielleicht weiß einer von euch einen Rat. Mit Gruß Schmidt
Schmidt schrieb: > So funktioniert es nicht, aber vielleicht weiß einer von euch einen Rat. einfach immer relative Verzeichnisse verwenden und keine Absoluten. Dann klappt das überall.
Nachtrag: #include "VERZEICHNIS/unterprogramm1.c" man includiert keine *.c Dateien. Arbeite mit einem Makefile und relativen Verzeichnisse und es funktioniert auf beiden Systemen.
Vielen Dank, da habe ich vor Bäumen den Wald nicht gesehen. Ja, ich arbeite z.Zt. unter Windows mit AVR-Stuio und binde die Unterroutinen über #include ein, da alles noch sehr alpha ist. So kann ich zum Debuggen schnell einzelne Programmgruppen entfernen oder einbinden. Künftig bietet sich eine zentrale Datei an (Makefile). Mit Gruß und Dank Schmidt
Mit dem Schalter -I kannst Du dem Make weitere Suchpfade hinzufügen, z.B.:
1 | -I../../CommonInclude |
Und der Aufruf im C-File:
1 | #include <libcommon.h> |
Schmidt schrieb: > Unterroutinen über #include ein, da alles noch sehr alpha ist. So kann > ich zum Debuggen schnell einzelne Programmgruppen entfernen oder > einbinden. Das macht man effektiver mit ifdefs
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.