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

    [C++] Compilazione a secondo dell's.o.

    Sto creando un progetto multipiattaforma e vorrei inserire all'interno un codice tipo questo:

    codice:
    #ifdef linux
       codice per linux
    #endif
    #ifdef win32
       codice per win32
    #endif
    #ifdef solaris
       codice per solaris
    #endif
    Sapete come fare? Mi spiego meglio, al momento della compilazione è possibile individuare in che s.o. mi trovo?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    103

    ciao :)

    non vorrei dire una cazzata ma....
    mi sembra che il c sia gia di per se multipiattaforma.... mi sembra una cosa astrusissima quella che stai cercando di fare.... il c è altamente portabile....dipende da dove lo compili.... in base al s.o che usi cambiano i tipi di compilatori...quindi...se pigli il tuo programma e lo compili sotto windows...o sotto linux...ottieni due codici oggetti differenti...senza bisogno di andare a creare dei case sul tipo di s.o.
    non so se è quello che volevi sapere cmq..
    ciaooo
    Linux like a wigwam, no windows no gates apache inside

  3. #3

    Re: ciao :)

    Originariamente inviato da billybilly
    non vorrei dire una cazzata ma....
    mi sembra che il c sia gia di per se multipiattaforma.... mi sembra una cosa astrusissima quella che stai cercando di fare.... il c è altamente portabile....dipende da dove lo compili.... in base al s.o che usi cambiano i tipi di compilatori...quindi...se pigli il tuo programma e lo compili sotto windows...o sotto linux...ottieni due codici oggetti differenti...senza bisogno di andare a creare dei case sul tipo di s.o.
    non so se è quello che volevi sapere cmq..
    ciaooo
    HAi detto l'opposto della verità in ogni frase!
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #4
    allora mi spiego meglio!

    Per motivi che nn sto qua ad elencare...devo fare delle cose se il codice è compilato sotto WIN (dal banalissimo system("PAUSE"), a cose + complesse) ed altre sotto Linux!!!

    Dato che vorrei creare UN solo codice, che quando venga compilato si adatti all's.o. in cui questo viene creato, tutto qua! Niente di strano! Lo so perfettamente che il c/c++ sono ottimi in entrambi i sistemi! Anzi a me serve che funzioni su "ogni" sistema da me menzionato (anche solaris)!!!

    P.s. Come compilatore utilizzo l'ottimo g++!!!

  5. #5
    Originariamente inviato da Jack.cpp
    allora mi spiego meglio!

    Per motivi che nn sto qua ad elencare...devo fare delle cose se il codice è compilato sotto WIN (dal banalissimo system("PAUSE"), a cose + complesse) ed altre sotto Linux!!!

    Dato che vorrei creare UN solo codice, che quando venga compilato si adatti all's.o. in cui questo viene creato, tutto qua! Niente di strano! Lo so perfettamente che il c/c++ sono ottimi in entrambi i sistemi! Anzi a me serve che funzioni su "ogni" sistema da me menzionato (anche solaris)!!!

    P.s. Come compilatore utilizzo l'ottimo g++!!!
    Non tu,lui ha detto l'opposto della verità!
    non vorrei dire una cazzata ma....
    mi sembra che il c sia gia di per se multipiattaforma.... mi sembra una cosa astrusissima quella che stai cercando di fare.... il c è altamente portabile....dipende da dove lo compili.... in base al s.o che usi cambiano i tipi di compilatori...quindi...se pigli il tuo programma e lo compili sotto windows...o sotto linux...ottieni due codici oggetti differenti...senza bisogno di andare a creare dei case sul tipo di s.o.
    non so se è quello che volevi sapere cmq..
    ciaooo
    Il c è tutt'altro che multipiattaforma,forse è il memo multipiattaforma che conosco (dopo il VB )
    I case sul sistema operativo ci vanno eccome e sono una pratica diffusa.
    Per mantenere il codice multipiattaforma ti devi limitare a fare operazioni così semplici e rudimentali (senza chiamare API di sistema) che difficlmente il tuo programma avrà un'utilità pratica notevole.L'unica strada che potresti seguire è quella di appoggiarti a librerie c++ crossplatform che in realtà schermano le differenze fornedo un sovrastrato.
    Comunque la cosa banale che vuoi fare tu è tranquillamnete fattibile.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Il codice che hai postato va benissimo, in fase di compilazione devi solo passare al compilatore un'opzione (la sintassi varia a seconda del compilatore) che ti permette di definire in fase di compilazione una costante del preprocessore.

    In pratica, è come se all'inizio del codice che hai postato, definissi

    codice:
    #define NOMEOS
    solo che non lo scrivi nel codice ma lo fai dichiarare al compilatore, e quindi puoi variarlo a seconda di dove lo compili.

    Spero di essermi spiegato
    Linux user number 403381

    Stop TCPA!

  7. #7
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    system ("nome comando");
    è un servizio che ogni sistema operativo deve garantire.
    Ho scritto del codice multipiattaforma, però si limitava a compilare su linux e su solaris, invece il passaggio su windows diventa molto complesso se vuoi utilizzare cose strane.

  8. #8
    Originariamente inviato da billybilly
    non vorrei dire una cazzata ma....
    mi sembra che il c sia gia di per se multipiattaforma.... mi sembra una cosa astrusissima quella che stai cercando di fare.... il c è altamente portabile....dipende da dove lo compili.... in base al s.o che usi cambiano i tipi di compilatori...quindi...se pigli il tuo programma e lo compili sotto windows...o sotto linux...ottieni due codici oggetti differenti...senza bisogno di andare a creare dei case sul tipo di s.o.
    non so se è quello che volevi sapere cmq..
    ciaooo


    HAi detto l'opposto della verità in ogni frase!
    rotfl! infatti
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

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.