Hallo zusammen,.... ich hab mir ein kleines OS geschrieben, und möchte dieses auf mehreren Controllern Laufen lassen. Geplant: Atmega 8, 16, 128 Fujitsu MB90340C Auf dem Mega128 lief es schon, nun auch auf dem Fujitsu, jedoch nur, wenn ich die #include- Aufrufe des Atmega auskommentiere. Kann man die #Include aufrufe irgendwie ignorieren lassen ähnlich wie beim #Pragma. So dass der Compiler entscheidet ob es ein relevantes oder eben kein relevantes #include ist?? Gruß noob
Also ich sehe es so, dass du denselben Code fuer 2 Prozessoren compilen willst, aber Abhaenig von der Architektut verschiedene Includes machen musst? Ist dass so:
1 | #define ATMEGA
|
2 | |
3 | #ifdef ATMEGA
|
4 | |
5 | #include <FASELblah.h> |
6 | |
7 | #else
|
8 | |
9 | #include <trallalala.h> |
10 | |
11 | #endif
|
Ich schließe mich meinem Vorredner an. Kann man in etwa auch so machen: Irgendwo in einer globalen Header-Datei (meinetwegen mydefs.h):
1 | #define FUJITSU
|
2 | //#define AVR
|
In der betreffenden Header-Datei bzw. Source:
1 | #if defined FUJITSU
|
2 | # include xyz.h
|
3 | #endif
|
nixversteh wrote: > Ich schließe mich meinem Vorredner an. > > Kann man in etwa auch so machen: > > Irgendwo in einer globalen Header-Datei (meinetwegen mydefs.h): >
1 | > #define FUJITSU |
2 | > //#define AVR |
3 | >
|
Vielleicht kann man es auch dem Compiler gleich mitgeben, das geht jedenfalls bei avr-gcc IIRC `avr-gcc -DATMEGA'
In der Regel haben die Compiler dafür auch bereits vordefinierte Makros. Der AVR-GCC definiert beispielsweise immer
1 | __AVR
|
und
1 | __AVR__
|
außerdem noch einen Makro
1 | __AVR_<MCUname>__ |
der der übergebenen -mmcu-Option entspricht.
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.