Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [c] come determinare a runtime su quale sistema operativo ci troviamo

    Ciao a tutti, come da oggetto vorrei sapere se è possibile e quali istruzioni servono per determinare in fase di esecuzione su quale sistema operativo ci troviamo, grazie mille!

  2. #2

    E' assolutamente impossibile fare una cosa del genere in c: il c è un linguaggio compilato, quindi, ogni programma deve essere ricompilato per l's.o. specifico (es linux e windows)...
    Se intendi su che windows ci troviamo allora prova in questo modo:
    codice:
    OSVERSIONINFO winosinfo;
    winosinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    memset(winosinfo.szCSDVersion,'\0',128);
    GetVersionExA(&winosinfo);
    
    switch(winosinfo.dwMajorVersion)
    {
       case 4:
          switch(winosinfo.dwMinorVersion)
             {
             case 0:
                // Windows 95
                break;
             case 10:
                // Windows 98
                break;
             case 90:
    	    // Windows ME
                break;
             }
        	break;
       case 5:
            switch(winosinfo.dwMinorVersion)
                {
              	case 0:
                 	    // Windows 2000
                        break;
                    case 1:
                        // Windows XP
                        break;
    	        case 2:
    		    // Windows 2003 Server
    		    break;
    	   }
    	   break;
    	case 6:
    	   if (!winosinfo.dwMinorVersion)
                  	// Windows Vista
    }
    Experience is what you get when you don’t get what you want

  3. #3
    Grazie mille, in effetti mi riferivo proprio alla possibilita di verificare non la versione dello stesso sitema ma invece se si tratta ad esempio di un sistema linux o microsoft... piu che altro per utilizzare quelle che sono le direttive di sistema corrette in un programma, banalmente ad esempio per pulire lo schermo vorrei poter richiamare la system("cls") se il porgramma viene eseguito su windows o la system("clear") su linux.... quindi forse l'unico modo e quello di utilizzare una try-catch per ottenere lo stesso risultato su sistemi diversi senza dover modificare il codice e ricompilare tutto...o sbaglio?

  4. #4
    Spesso i compilatori definiscono macro differenti a seconda del sistema operativo su cui stanno compilando... ad esempio, VC++ definisce la macro _WIN32. In tal caso potresti usare una cosa del genere:
    codice:
    #if defined _WIN32
    //fa quello che deve fare se compilato su Windows
    #elif defined _LINUX //dico per dire
    //fa quello che deve fare se compilato su Linux
    #endif
    .
    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.