Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [C++] Compilare con g++

    Codice PHP:
    #include <iostream.h>

    main()
    {
        
    cout << "Hello\n";

    Scrivendo questo banalissimo pezzo di codice per capire il funzionamento di g++, ed eseguendo il comando:

    g++ hello.cpp

    mi crea il file dandomi questo warning:

    Codice PHP:
    In file included from /usr/include/c++/4.1.3/backward/iostream.h:31,
                     
    from ao.cpp:1:
    /
    usr/include/c++/4.1.3/backward/backward_warning.h:32:2warning#warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in 

    section 17.4.1.2 of the C++ standardExamples include substituting the <Xheader for the <X.hheader for C++ includes, or <iostreaminstead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated
    Sapete dirmi come posso compilare facilmente programmi scritti in c/c++?
    La curiosità è la fonte della conoscenza.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi scrivere

    #include <iostream>

    e non

    #include <iostream.h>

  3. #3
    Immagino che tu abbia trovato quel codice in qualche tutorial on-line...

    Prova

    codice:
    #include <iostream> 
    
    int main() 
    { 
        std::cout << "Hello" << std::endl; 
    }
    oppure

    codice:
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      cout << "Hello" << endl;
    }
    Sapete dirmi come posso compilare facilmente programmi scritti in c/c++?
    Un buon ambiente di sviluppo può semplificarti la vita... Dagli errori del compilatore immagino che tu utilizzi Linux, giusto?

  4. #4
    Originariamente inviato da pallinopinco
    Immagino che tu abbia trovato quel codice in qualche tutorial on-line...
    No.
    Per quello che ho sempre saputo io, (programmando in Windows) la differenza di scrivere
    <iostream.h> ed <iostream> era che con il primo si poteva evitare di scrivere "using namespace std".
    Inoltre vedo che tutti mettete "int main" senza poi restituire nessun return a intero.

    Un buon ambiente di sviluppo può semplificarti la vita... Dagli errori del compilatore immagino che tu utilizzi Linux, giusto?
    Si uso linux. Volevo sapere se scrivere "g++ file.cpp" fosse corretto perchè facendo un "man g++" non mi suona bene.

    Ho visto scrivere da qualcuno:
    g++ file.cpp -o fileeseguibile

    Ho provato a fare questo e mi viene creato un file eseguibile che però andandolo ad aprire non mi esegue nulla...
    La curiosità è la fonte della conoscenza.

  5. #5
    No.
    Se è scritto di tuo pugno dovresti procurarti un buon libro (di recente pubblicazione) sul C++.

    Per quello che ho sempre saputo io, (programmando in Windows) la differenza di scrivere
    <iostream.h> ed <iostream> era che con il primo si poteva evitare di scrivere "using namespace std".
    Ne sapevi poco... La standard library del C++ è stata modificata e dunque è cambiata anche la nomenclatura delle intestazioni. Se ti interessa approfondire la questione leggi l'articolo <iostream> vs <iostream.h>, vengono spiegate un bel po' di cosette.

    Inoltre vedo che tutti mettete "int main" senza poi restituire nessun return a intero.
    Ti sei mai chiesto perché?

    La risposta la trovi nello standard C++ ISO/IEC 14882:

    A return statement in main has the effect of leaving the main function (destroying any objects with automatic
    storage duration) and calling exit with the return value as the argument. If control reaches the end
    of main without encountering a return statement, the effect is that of executing
    return 0;

  6. #6
    ok cerchero di leggere tutto al più presto ti ringrazio.

    Per quanto riguarda invece il comando da scrivere in shell per compilare e creare l'eseguibile?
    Perchè quello che mi crea non esegue nulla?
    La curiosità è la fonte della conoscenza.

  7. #7
    Originariamente inviato da P4nico

    Si uso linux. Volevo sapere se scrivere "g++ file.cpp" fosse corretto perchè facendo un "man g++" non mi suona bene.

    Ho visto scrivere da qualcuno:
    g++ file.cpp -o fileeseguibile
    il compilatore g++ ha moltissime opzioni, se indichi -o file_exe il binario avrà nome file_exe, altrimenti il nome di default sarà a.out.
    Molto utile risulta automatizzare la compilazione con il programma make.
    In questo caso le istruzioni di compilazioni le scrivi in un file che devi chiamare makefile e la compilazione la fai partire digitando da console make.
    Un esempio di makefile può essere (che produce una libreria condivisa
    Codice PHP:

    CC
    =g++
    CFLAGS=tutti i tuoi flag di compilazione
    APPNAME
    =nome_applicazione
    #le directory dei file include
    INCLUDE=    -I./             
    #i file sorgenti
    SRCFILES=    ./tuo_file.cpp        

    $(APPNAME) : $(SRCFILES)
           $(
    CC) $(CFLAGS) $(INCLUDE) $(SRCFILES) -
    ciao
    sergio

  8. #8
    Perchè quello che mi crea non esegue nulla?
    Se salvi il seguente codice in un file chiamato prova.cpp

    codice:
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      cout << "Premi RETURN per continuare..." << endl;
      cin.get();
    }
    e lo compili con:

    g++ prova.cpp -o prova -s

    poi puoi eseguirlo dalla shell (devi posizionarti nella cartella che contiene l'eseguibile) con

    ./prova

    Ti scriverà "Premi RETURN per continuare" e aspetterà la pressione del tasto INVIO.

  9. #9
    Originariamente inviato da pallinopinco
    e lo compili con:

    g++ prova.cpp -o prova -s

    poi puoi eseguirlo dalla shell (devi posizionarti nella cartella che contiene l'eseguibile) con

    ./prova

    Ti scriverà "Premi RETURN per continuare" e aspetterà la pressione del tasto INVIO.
    Ah... quindi mi devo dimenticare della finestrella che mi appare quando faccio partire l'eseguibile e mi fa eseguire i comandi del programma.
    Dovrò sempre continuare a usare la shell richiamando i programmi che ho scritto con ./nomeprogramma ed eseguirli da li?
    La curiosità è la fonte della conoscenza.

  10. #10
    Ah... quindi mi devo dimenticare della finestrella che mi appare quando faccio partire l'eseguibile e mi fa eseguire i comandi del programma.
    Dovrò sempre continuare a usare la shell richiamando i programmi che ho scritto con ./nomeprogramma ed eseguirli da li?
    No, puoi tranquillamente continuare a lanciare i programmi dall'interfaccia grafica (Gnome? Kde?), però se non aggiungi la riga cin.get() il programma terminerà l'esecuzione dopo aver stampato la stringa, quindi ti "sembrerà" che non produca alcun output.

    Dopo aver fatto un po' di esperienza con la riga di comando puoi installare Kdevelop, Anjuta, CodeBlocks, Eclipse, Emacs o qualsiasi altro ambiente di sviluppo integrato a tua scelta, così potrai scrivere il codice, compilarlo e testarlo senza dover passare da una finestra all'altra.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.