atari-home.de - Foren
Software => Coding => Thema gestartet von: Arne am Do 04.11.2010, 07:16:15
-
Moin zusammen,
da ich mich im nächsten Jahr auch wieder mit der SW-Entwicklung auf dem ST beschäftigen will, wäre es für mich ganz hilfreich, wenn die "predefined macros" der verschiedenen auf dem ST genutzten C-Compiler (C-Präprozessoren) bekannt wären, damit der Code möglichst auf allen Compilern baut.
Ich habe gestern abend im Pure-C Handbuch geblättert und spezifisch für diesen Compiler nur das __PUREC__ Macro gefunden. Wenn das definiert ist, dann baut der Code gerade unter Pure-C. Wie sieht es mit anderen Compiler aus (Lattice, Megamax...)? Am Ende würde ich ein Headerfile für Atari zusammenstellen, wie ich es schon seit 10 Jahren beruflich für die benutzten Microcontroller auch mache und dann veröffentlichen.
Gruß, Arne
-
Ich glaube den Megamax brauchst Du nicht zu beachten da zu alt.
Über Lattice 5.6 findest Du hier was. (http://www.schupp.lt/Atari/ckurs/download/lc_560.zip)
Der AHCC ist ein freier Purec C kompatibler Compiler der auch Code für den Coldfire erzeugen kann. (http://members.chello.nl/h.robbers/)
Atari Kompendium. (http://www.schupp.lt/Atari/ckurs/download/TAC.pdf)
Atari Profibuch ST-STE-TT (http://www.atariprofibuch.de/ATARI%20Profibuch%20ST-STE-TT.pdf)
-
Ich glaube den Megamax brauchst Du nicht zu beachten da zu alt.
Der Vollständigkeit halber... ;)
Danke für die Links - vom AHCC habe ich bisher nichts gelesen (war ja auch 6 Jahre "weg").
Den GST habe ich schon aussen vor gelassen. IIRC konnte der nichtmal floats!
Benutzt hier jemand noch C-Compiler abseits von:
- Pure C
- Turbo C
- AHCC
- GCC
- Megamax C
Gruß, Arne
-
Eigentlich sind nur noch gcc ahcc und pure-c die compiler die verwendet werden. Ich denke das sich das in nächster zeit auf ahcc und gcc beschränken wird da beide weiter entwickelt werden.
-
Der GNU C wir natürlich auch viel verwendet. Ich bin aber noch kein Programmierer. ;)
-
GCC = Gnu C Compiler ;)
-
Schon klar Ingo. Der VBCC (http://sun.hasenbraten.de/vbcc/) könnte auch interessant sein da er sehr schnellen Code erstellt.
-
GCC = Gnu C Compiler ;)
Ganz richtig GNU Compiler Collection ;)
VBCC kommt mit auf die Liste.
-
Schon klar Ingo. Der VBCC (http://sun.hasenbraten.de/vbcc/) könnte auch interessant sein da er sehr schnellen Code erstellt.
Sieht aber so aus als wäre er nur für den Amiga, wobei man ihn sicher auch portieren kann.
-
Schau mal weiter unten (violett hinterlegte Zeilen) und ganz unten die grünen: TOS & MinT
-
Ups garnicht gesehen! Hab nur oben den Kopf gelesen.
-
Compiler nur das __PUREC__ Macro gefunden.
__GNUC__ = GCC
__PUREC__ = Pure C
__TURBOC__ = Turbo C (Vorgänger von Pure C) , Pure C, AHCC
__AHCC__ = AHCC
__SOZOBONC__ = Sozobon C
LATTICE = Lattice C (bin ich mir nicht ganz sicher)
__MWERKS__ = CodeWarrior 11 mit C-Compiler >= 7.1 ?
_MSC_VER = MSVC 2.0?
Gerhard
-
Hallo,
evt. ist diese deklaration von Interesse, sollte unter allen Compilern verlässliche Typen bereitstellen:
typedef signed char BYTE;
typedef unsigned char CHAR;
typedef signed short WORD;
typedef unsigned short UWORD;
typedef signed long LONG;
typedef unsigned long ULONG;
-
Normierte Datentypen sind immer gut! Dann macht es allerdings mehr Sinn die Typen gleich mittels stdint.h zu definieren, wie im C99 Standard. Dann ist es nämlich echt portabel, auch zu kommenden Compilern.
vgl. http://en.wikipedia.org/wiki/Stdint.h (http://en.wikipedia.org/wiki/Stdint.h)
-
Normierte Datentypen sind immer gut!
Stimmt, aus dem Grund werden sie im tos.hyp genutzt[1] .
Dazu hilft vielleicht der Header aus der PCGEM.LIB oder PCTOS.LIB[2]. Im acstype.h wird so ziemlich alles an Typen definiert was es so gibt.
Gerhard
[1] Mir ist bekannt, daß noch nicht alles Umgesetzt ist.
[2] http://acspro.atari.org/
-
Normierte Datentypen sind immer gut! Dann macht es allerdings mehr Sinn die Typen gleich mittels stdint.h zu definieren, wie im C99 Standard. Dann ist es nämlich echt portabel, auch zu kommenden Compilern.
Genauso sehe ich das auch, wobei meine bisher selbstdefinierten fast identisch zu stdint.h sind - bis auf das '_t' am Ende. Dieses BYTE, WORD erinnert mich mehr an Pascal. Wenn ich so einen Code lese, kann ich mir nie intuitiv was darunter vorstellen. In der letzten Firma hatte man das zeitweise auch so gemacht - einer der vielen Gründe warum ich nicht mehr dort bin ;D
In Pure C kann man ja auch die CPU für den zu erzeugenden Code eingeben. Gibt es dazu auch vordefinierte Macros?