Am Freitag 21 Dezember 2007 12:23:18 schrieb Torsten Werner:
auf meiner Plattform definiert der gcc ein Makro __i386__. Wie finde ich heraus, welche Makros es auf anderen Plattformen gibt? Insbesondere interessieren mich die Debian-Plattformen.
Das Makro im GCC-Source dafür heißt builtin_define_std().
Wenn man danach sucht, findet man u.a.: i386, arm, arm32, mc68000, parisc, powerpc, sparc
Aber auch für die OS-Plattform: unix, vax, hpux, WIN32, MACH
Zu den Unterstrichen sagt die Doku dann folgendes:
/* Pass an object-like macro. If it doesn't lie in the user's namespace, defines it unconditionally. Otherwise define a version with two leading underscores, and another version with two leading and trailing underscores, and define the original only if an ISO standard was not nominated.
e.g. passing "unix" defines "__unix", "__unix__" and possibly "unix". Passing "_mips" defines "__mips", "__mips__" and possibly "_mips". */
Das Makro builtin_define() stellt darüber hinaus auch noch __amd64__, __ia64__, __powerpc64__ etc. zur Verfügung.
In der GCC-Doku ist das nicht wirklich dokumentiert. Ich weiß jetzt allerdings auch nicht, ob das da rein gehört, wobei es auch in der glibc-Doku nicht zu finden ist, und somit kann man wohl getrost eine der beiden als unvollständig bezeichnen.
Josef