#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*/
    #endif

    THX



  • 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 drinne

    wird ja gern für dieses pragma once genutzt


Log in to reply