Autor Thema: predefined macros (C-Compiler)  (Gelesen 23709 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Arne

  • Gast
predefined macros (C-Compiler)
« 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

Offline Arthur

  • Benutzer
  • Beiträge: 10.309
  • Mein Atari erinnert mich an die gute alte Zeit..
« Letzte Änderung: Do 04.11.2010, 07:36:41 von Arthur »

Arne

  • Gast
Re: predefined macros (C-Compiler)
« Antwort #2 am: Do 04.11.2010, 07:43:16 »
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

Offline tuxie

  • Benutzer
  • Beiträge: 6.834
  • Falcon! Milan! Schuetzt die Raubvoegel!
Re: predefined macros (C-Compiler)
« Antwort #3 am: Do 04.11.2010, 07:46:12 »
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.
Tschau Ingo

Offline Arthur

  • Benutzer
  • Beiträge: 10.309
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: predefined macros (C-Compiler)
« Antwort #4 am: Do 04.11.2010, 07:46:48 »
Der GNU C wir natürlich auch viel verwendet. Ich bin aber noch kein Programmierer. ;)

Offline tuxie

  • Benutzer
  • Beiträge: 6.834
  • Falcon! Milan! Schuetzt die Raubvoegel!
Re: predefined macros (C-Compiler)
« Antwort #5 am: Do 04.11.2010, 07:48:28 »

GCC = Gnu C Compiler  ;)
Tschau Ingo

Offline Arthur

  • Benutzer
  • Beiträge: 10.309
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: predefined macros (C-Compiler)
« Antwort #6 am: Do 04.11.2010, 08:32:03 »
Schon klar Ingo. Der VBCC könnte auch interessant sein da er sehr schnellen Code erstellt.

Arne

  • Gast
Re: predefined macros (C-Compiler)
« Antwort #7 am: Do 04.11.2010, 08:40:48 »

GCC = Gnu C Compiler  ;)
Ganz richtig GNU Compiler Collection  ;)

VBCC kommt mit auf die Liste.

Offline tuxie

  • Benutzer
  • Beiträge: 6.834
  • Falcon! Milan! Schuetzt die Raubvoegel!
Re: predefined macros (C-Compiler)
« Antwort #8 am: Do 04.11.2010, 08:44:57 »
Schon klar Ingo. Der 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.
Tschau Ingo

Arne

  • Gast
Re: predefined macros (C-Compiler)
« Antwort #9 am: Do 04.11.2010, 08:47:48 »
Schau mal weiter unten (violett hinterlegte Zeilen) und ganz unten die grünen: TOS & MinT

Offline tuxie

  • Benutzer
  • Beiträge: 6.834
  • Falcon! Milan! Schuetzt die Raubvoegel!
Re: predefined macros (C-Compiler)
« Antwort #10 am: Do 04.11.2010, 09:03:39 »
Ups garnicht gesehen! Hab nur oben den Kopf gelesen.
Tschau Ingo

gstoll

  • Gast
Re: predefined macros (C-Compiler)
« Antwort #11 am: Do 04.11.2010, 18:02:07 »
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

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: predefined macros (C-Compiler)
« Antwort #12 am: Do 04.11.2010, 19:34:26 »
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;

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.807
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: predefined macros (C-Compiler)
« Antwort #13 am: Do 04.11.2010, 21:23:29 »
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
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

gstoll

  • Gast
Re: predefined macros (C-Compiler)
« Antwort #14 am: Fr 05.11.2010, 06:03:24 »
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/

Arne

  • Gast
Re: predefined macros (C-Compiler)
« Antwort #15 am: Fr 05.11.2010, 06:06:22 »
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?