ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Gibt es ein Standard-#define für Amiga-Systeme? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
01.01.2013, 21:04 Uhr Reth Posts: 1858 Nutzer |
Hallo zusammen und ein gutes neues Jahr wünsche ich! Sorry für die hoffentlich nicht zu blöde Frage, aber gibt es so etwas im Vgl. zu Windows oder Linux: C code:?#if defined (_WIN32) #if defined __linux Habe schon von C code:gelesen, weiss aber nicht, ob das immer und überall trägt.#if defined AMIGA Oder muss man sich so ein Define immer selbst im makefile setzen? Danke schon mal für ne kurze Info. (Hm, irgendwie wird bei mir der Text nach dem ersten Codeblock in der Vorschau so klein angezeigt wie die Überschrift "C code:". Ist da was mit der Forensoftware passiert, oder gehts nur mir so?) Ciao [ Dieser Beitrag wurde von Reth am 01.01.2013 um 21:04 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
01.01.2013, 23:35 Uhr jolo Posts: 110 Nutzer |
Nee, leider nicht, obschon unter GNU-C bei meiner Installation (gcc 3.4.0 mit dem SDK 3) es gesetzt ist. Hier mal ein Beispiel wie ich es machen würde. Für 'gcc' müsstest Du mal nachschlagen, welches Makro die Prozessorfamilie spezifiziert. Habe hier mal aus den Kopf zur Sicherheit alle genommen, die ich für m68k kenne. code:#if defined (__amigaos4__) || defined(__MORPHOS__) || defined(__AROS__) #define AMIGA #else #if defined(__VBCC__) && defined(__M68K__) #define AMIGA #else #if defined(__GNUC__) && (defined(_M68000) || defined(__M68000) || defined(__mc68000)) #undef AMIGA #define AMIGA #else #if defined(__SASC) || defined(__MAXON__) || defined(__DCC) #define AMIGA #endif #endif #endif #endif #include <stdio.h> #include <string.h> int main( int argc, char **argv) { #if defined(AMIGA) puts( "Running on an Amiga (alike) host."); #else puts( "Running on a non AMIGA (alike) host."); #endif } Für 'gcc' reichen solche Tests aber nicht auch; gibt ja auch Debian und NetBSD die unter m68k Prozessoren laufen. Da musst Du dann von Anfang an das Ausschlussverfahren anwenden... Grüße -- Stupid mistakes are always made by others - we only make unavoidable errors [ - Antworten - Zitieren - Direktlink - ] |
02.01.2013, 16:13 Uhr Thore Posts: 2266 Nutzer |
Du hast StormC vergessen Aber es stimmt schon, meist reicht ein C++ code:durchaus aus. Und ein define das alles beinhaltet zu deklarieren ist sicher nicht verkehrt.#if defined(__amigaos4__) || defined(__MORPHOS__) || defined(__AROS__) Kommt eben auch drauf an, für welche Systeme du compilieren willst. [ - Antworten - Zitieren - Direktlink - ] |
08.01.2013, 10:18 Uhr gni Posts: 1106 Nutzer |
Zitat:Ich denke mal, das der AmigOS-Port des GCC immer ein eingebautes #define für AMIGA haben wird, alleine um SAS/C kompatibel zu sein bzw. zu bleiben. Ein weiteres Kompatibilitätsdefine ist MCH_AMIGA, das stammt noch von Aztec-C. FWIW, die angesprochene GCC Portierung hat vor sehr langer Zeit ein anderes Symbol als neues Standardefine eingeführt: __amigaos__ - später wurde das dann für OS4 abgewandelt ;) Ach ja das #define __amiga__ gibt es beim GCC auch. BTW, bitte die Unterstriche beachten! Die Symbole ohne Unterstriche sind nicht immer definiert! Zitat:IMHO ist der vorgeschlangene Ansatz keine gute Idee, da AMIGA hier u.U. einfach überdefiniert wird (edit: beim GCC hast Du es vorher entfernt ;). Sowas sollte immer unterbleiben. Also entweder vorher ein #undef oder vermutlich besser #ifndef AMIGA verwenden. Zitat:Hier würde ich defined (__amigaos__) ergänzen.code:#if defined (__amigaos4__) || defined(__MORPHOS__) || defined(__AROS__) Zitat:Laut Doku und config hat VBCC wirklich kein OS #define.code:#if defined(__VBCC__) && defined(__M68K__) #define AMIGA Zitat:Das kann komplett raus.code:#if defined(__GNUC__) && (defined(_M68000) || defined(__M68000) || defined(__mc68000)) #undef AMIGA #define AMIGA Im übrigen kennt der GCC "nur" mc68000 (mit doppelten Unterstrichen davor und dahinter bzw nur davor) und Varianten für mc680x0 mit x=2,3,4,6. Seit 4.3 gibt es auch x=1. Die M68000 Symbole sind von SAS/C bzw von VBCC. Zitat:Der SAS/C Test kann entfallen. Maxon und Dice kenn ich nicht (gut genug).code:#if defined(__SASC) || defined(__MAXON__) || defined(__DCC) #define AMIGA #endif [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Gibt es ein Standard-#define für Amiga-Systeme? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |