Hallo,
derzeit versuche ich, einige C-Programme auf Solaris zu portieren. Als ich diese vor längerer Zeit für FreeBSD und NetBSD entwickelte, hatte ich häufig von bedingter Kompilierung Gebrauch gemacht. Es handelt sich dabei um relativ "systemnahe" Programme, und da gibt es doch häufig subtile Unterschiede zwischen den verschiedenen Unices, was dann zu Konstrukten wie den folgenden führt:
#ifdef __FreeBSD__
// ... FreeBSD-related stuff ...
#endif
#ifdef __NetBSD__
// ... NetBSD-related stuff ...
#endif
Das funktioniert so aber nur mit dem GCC, bei dem man sich netterweise auch mit -dM alle vom Compiler bereitgestellten Makros auflisten lassen kann.
Unter Solaris soll das ganze natürlich mit dem Sun C-Compiler (Version 5.8) kompiliert werden. Aber mit welchem Makro kann ich dann erkennen, daß ich unter Solaris unterwegs bin? Leider habe ich dazu keinerlei Informationen finden können. Etwas ähnliches wie -dM, um sich einen Überblick zu verschaffen, scheint es nicht zu geben.
Alternativ könnte man natürlich auch beim Compiler-Aufruf "von Hand" ein Makro wie __SunOS__ o.ä. setzen oder mit uname(3) hantieren. "Sauberer" fände ich es aber, wenn der Compiler ein Makro liefern würde.
Das beschäftigt mich jetzt schon eine ganze Weile. Vielleicht kennt sich jemand von euch besser mit dem Sun-Compiler aus und kann mir da einen Tip geben. Danke im Voraus. :)