#define und Windows/Linux
-
hi,
sorry, wenn das nicht wirklich in C++ Forum passt.
Definieren Windows bzw. Linux irgendwelche Sachen, anhand derer man zur Compilezeit zwischen Windows und Linux unterscheiden kann?
sowas wie:
#ifdef WINDOWS
/*lass die katze aus dem sack*/
#elif LINUX
/*pack die katze in den sack*/
#else
/*unbekannte katze*/
#endifTHX
-
umm zur Laufzeit? Interessant ich habe auch schon viele .exe unter Linux geöffnet
Nein mal ernsthaft es ist recht gängig es zu machen wie du es gemacht hast allerdings alleine dadurch, dass es precompileranweisungen sind, müsste klar sein, dass man es vor der compilierung festlegt
-
NeWs0fTzzz schrieb:
umm zur Laufzeit? Interessant ich habe auch schon viele .exe unter Linux geöffnet
in meinem Beitrag steht auch was von Compilezeit
NeWs0fTzzz schrieb:
compiler redirektiven
Ich will eigentlich wissen ob der Compiler irgendwas definiert was darauf hinweist das es unter Windows/Linux kompiliert wird.
-
Du hast nicht verstanden worauf ich hinauswollte...
Du definierst das PER HAND ob es Windows ist oder Linux.. so einfach.
Du kannst schliesslich für Linux unter Windows kompilieren sowie du für Windows unter Linux kompilieren kannst.
-
mhh, oder so
-
bei mir gehen __WIN32__ und __linux__
-
@bluecode
Standardisierte Makros gibt es nicht, da letztendlich jeder Compiler sein eigenes Süppchen kocht. Da kann man sich nur mit etlichen Präprozessorweichen behelfen#if defined COMPILER1 && __windows__ #define WINDOWS 1 #elif defined COMPILER2 && __win__ #define WINDOWS 1 #elif defined COMPILER3 && __WINDOWS__ #define WINDOWS 1 #elif ... #else #define WINDOWS 0 #endif
Google hilft dir dabei, was welcher Compiler letztendlich anbietet. Stichwort: predefined c++ compiler macros.
-
Gibts ein Standardschema mit dem ich Visual Studio erkennen kann?
Oder ein Standard Define das den Compiler identifiziert?
MfG
Scarabol
-
-
ja gibts
microsoft hat sowas inder art definiert
__MVCVER__aber ich weis es nicht genau
da ist auch die versions nummer "drin"
-
#if defined(_MSC_VER) // VC #endif
-
genau das meine ich
und wie man an dem macro namen sieht ist die versions nummer gleich mit drinnewird ja gern für dieses pragma once genutzt