Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    [C / C++] Identificazione OS.

    Salve a tutti,

    premetto che non sono un mastro nella programmazione C/C++ ma vorrei appunto migliorare. Detto ciò pre-scusatemi se nella domanda userò termini che magari nella realtà potrebbero essere associati ad altre cose.

    La domanda è semplice: come posso sapere se un OS è Win98, WinVista, Win7, MAC OS X , Linux Ubuntu o altri?

    Ci si basa su qualche costante del sistema operativo specifica che lo identifica?
    Ci si basa (boh) sul compilatore (se centra qualcosa) ?
    Ci si basa su X, Y o Z?


    Quello che vorrei ottenere è (per iniziare ad esempio) un programmino che mi dice:

    ..sei su Windows 98
    ..sei su Windows Vista
    ..sei su MAX OS X versione N
    ..sei su Linux Ubuntu
    ..ecc.


    Grazie in anticipo

  2. #2
    Dipende da sistema operativo e compilatore.
    Per distinguere tra piattaforme completamente diverse (Linux, Mac OS X, Windows), in genere ci si affida a delle #define fornite dal compilatore, che indicano la piattaforma su cui/per cui si sta compilando; poi si usano API o sistemi specifici del sistema operativo. Su Windows userai la GetVersionEx, sui sistemi POSIX (come Linux, Mac OS X, *BSD, ...) puoi usare la uname per ottenere informazioni sul kernel, mentre altre informazioni le ritrovi in maniere diverse a seconda del sistema operativo.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Originariamente inviato da MItaly
    in genere ci si affida a delle #define
    Si. Avevo letto delle define. Quindi si potrebbe partire da una serie di #if defined X.

    Detto ciò, se la define che identifica un OS Windows ad esempio, immagino poi avrà qualcosa che mi dice se è 98,Vista o 7 giusto?

  4. #4
    La #define viene valutata al momento della compilazione, per questo va bene giusto per identificare la piattaforma per cui è compilato l'eseguibile (Windows o POSIX); per i dettagli del sistema operativo, come spiegato prima, usi poi API come GetVersionEx (su Windows) e uname (su sistemi operativi POSIX).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Thanks a lot

  6. #6
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.