OS abfragen



  • Hallo :p

    Gibt es vielleicht irgendeine Möglichkeit, Plattformunabhängig zu programmieren, indem man mit #.. prüft, ob das Betriebssystem benutzt wird?

    Als Beispiel:

    #if WINDOWS
    Sleep(2000);
    #if LINUX
    sleep(2); // Bei Linux funktioniert das wie bei Windows glaub ich so ähnlich, nur in Sekunden und nicht in ms
    #endif
    

    Wäre sehr nett, wenn mir jemand dazu etwas kleines erklären könnte 😃

    Mit freundlichen Grüßen,
    ..



  • Dafür gibt es vordefinierte Präprozessornamen wie "__WIN32", auf deren Existenz mit "#ifdef" geprüft werden kann.



  • Ja.

    Was genau definiert ist, steht in der Bedienungssanleitung des jeweiligen Compilers.

    Man fragt z.B. dann mit

    #ifdef LINUX
    ...
    #endif
    

    ab.



  • ja sollte es allerdings zu solchen komischen Betriebssystemabhängigen Funktionen kommen, dann würd ich mir die in eine inline Funktion kapseln, um eine einheitliche struktur ohne viele Makros zu sichern.



  • jamand hatte mal diesen guten Link gepostet:
    http://predef.sourceforge.net/preos.html



  • Krux schrieb:

    ja sollte es allerdings zu solchen komischen Betriebssystemabhängigen Funktionen kommen, dann würd ich mir die in eine inline Funktion kapseln, um eine einheitliche struktur ohne viele Makros zu sichern.

    was für komische? ^^

    b7f7 schrieb:

    jamand hatte mal diesen guten Link gepostet:
    http://predef.sourceforge.net/preos.html

    Wie sollte ich das am Besten machen? Ein Beispiel wäre sicherlich besser zu verstehen 😃

    Mit freundlichen Grüßen,
    ..



  • Du sollst das betreibssystemabhängige kapseln damit du es an einer zentralen Stelle hast:

    #ifdef _WIN32
    #include <windows.h>
    #else
    #include <unistd.h>
    #endif
    
    void my_sleep(unsigned int ms)
    {
    #ifdef _WIN32
        Sleep(ms);
    #else
        usleep(ms * 1000); // erwartet Mikrosekunde (glaub ich)
    #endif
    }
    

    Dann kannst du im eigentlichen Code immer my_sleep verwenden ohne immer das OS zu überprüfen.

    Gruß
    Don06


Log in to reply