Re: Abfrage des verwendeten Betriebssystems
Auch Hallo ;-)
Hallo,
gibt es in C/C++ eine Konstante, über die sich Rückschlüsse auf das verwendete Betriebssystem bzw. den verwendeten Compiler machen lassen?
Konkret geht es hier um eine Unterscheidung zwischen Linux (GNU) und Windows (Boland bzw. Microsoft).
Gruß, Bernhard
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 ;-) Gruss - Arndt
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', '__unix__', 'linux', '__linux', '__linux__', '__GNUC__', siehe 'gcc -v -c -o /dev/null belibieges.c' Wie's mit anderen Compilern (icc) aussieht weiss ich jetzt nicht. -dnh -- 60: Virtual Reality AVI-Animation mit 16 Farben (Sebastian Kokemohr-Schmidt)
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
participants (3)
-
Arndt Stedler
-
David Haller
-
Ralf Corsepius