Am Sam, 2002-11-23 um 16.57 schrieb David Haller:
Hallo,
On Sat, 23 Nov 2002, Arndt Stedler wrote:
gibt es in C/C++ eine Konstante, über die sich Rückschlüsse auf das verwendete Betriebssystem bzw. den verwendeten Compiler machen lassen?
Die Compiler selber setzen defines: Borland C setzt __BORLANDC__ Microsoft setzt das define _MSC_VER (Version des Mickysoft compilers)
dann musst du noch schauen, ob das define _WIN32 gesetzt ist (<-Windows 32 Bit)
#ifdef _WIN32 // Windows #if(_WIN32_WINNT >= 0x0500) // Dann ist es Win2000 oder XP
Aber mit Linux kenn ich mich leider auch noch nicht aus... fange gerade erst an ;-)
gcc setzt unter Linux u.a. die defines
'unix', Traditionelles Define zur Identifikation von Uni*-artigen OSen. Stammt aus der Urzeit von Unix, ist obsolet und sollte nicht verwendet werden. In der Praxis nur selten sinnvoll.
'__unix__', Neuere Variante von "unix", in der Praxis nur selten sinnvoll.
'linux', Obsolet, nicht verwenden.
'__linux', Obsolet, nicht verwenden.
'__linux__', Das ist es was Du suchst, ist in der Praxis aber nur selten sinnvoll[1]
'__GNUC__', siehe Markiert die Verwendung des Gcc - Sollte man nie benötigen.
[1] Was Du in der Regel brauchst, sind defines um die Unterschiede in der API, die eine libc definiert zu erkennen. In einfachsten Fällen reicht dann ein #ifdef __linux__, wird es aber komplizierter z.B. weil sich etwas im gcc oder aber in der API der libc geändert hat, brauchst Du zusätzlich noch __GLIBC__ oder ähnliche Defines, die von der glibc bereitgestellt werden (vgl. /usr/include/features.h). Ralf