Visualizzazione risultati 1 fino 10 di 10

Discussione: [Dec-C++]Strano errore sull'ultima versione

  1. #1
    Guest

    Predefinito [Dec-C++]Strano errore sull'ultima versione

    Allora; ho il seguente, semplicissimo codice:

    Codice:
    #include <iostream>
    
    int main(){
    char a;
    cout << "Ciao, mondo!!";
    cin >> a;
    return 0;
    }
    Utilizzo il compilatore Dev-C++.
    L'ho scaricato oggi, perché da pochi giorni ho iniziato a mettere mano sul C++.
    C'è qualcosa che però non quadra.
    Nella versione 4 di Dev-C++, quel codice funziona, e va tutto OK.
    Se invece provo ad eseguirlo sulla versione 4.9.9.2 (l'ultima disponibile) mi dà un errore "Impossibile trovare il file specificato"...

    Mah... se il suo "fratello minore" riesce ad eseguire quel semplice codice senza problemi, perché lui si fa tutti questi grattacapi?
    Sapessi almeno a che file si riferisce...

    Qualcuno sa aiutarmi?

    EDIT:

    Ok, sto impazzendo.
    In pratica l'errore avrebbe dovuto esser causato dal fatto che mancava un'estensione chiamata "GNU Make"; l'ho scaricata ed installata; non mi dà più quell'errore.
    Ma ora me ne dà un casino di altri, errori!

    Questo è il log di compilazione (sempre dello stesso codice precedente):

    Compilatore: Default compiler
    Building Makefile: "C:\Documents and Settings\Zorinik\Desktop\prov\Makefile.win"
    Esecuzione di make...
    make.exe -f "C:\Documents and Settings\Zorinik\Desktop\prov\Makefile.win" all
    g++.exe -c prova.cpp -o prova.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

    prova.cpp: In function `int main()':
    prova.cpp:5: error: `cout' undeclared (first use this function)
    prova.cpp:5: error: (Each undeclared identifier is reported only once for each function it appears in.)

    prova.cpp:6: error: `cin' undeclared (first use this function)

    make.exe: *** [prova.o] Error 1

    Esecuzione terminata

    Ultima modifica di Zorinik : 05-05-2007 alle ore 19.42.46

  2. #2
    Guest

    Predefinito

    Spesso il dev-c++ da problemi di compilazione dovuti al fatto che carica in modo strano le librerie e alcuni file di sistema che risultano poi dispersi nei meandri dell'hardisk. Altrettanto spesso è selezionata l'opzione di compilazione solo su c e quindi giustamente con il codice sopra ti da errore. Prima di tutto ti consiglio di fare una nuova installazione pulita e poi prova a cercare nelle opzioni se è abilitato il c++. Per fare una prova prima vedi se funziona il c.

  3. #3
    Guest

    Predefinito

    Trovato!
    Ci voleva il ".h" in:
    #include <iostream>
    in pratica doveva essere così:
    #include <iostream.h>

    Il bello è che nella versione precedente del programma me l'accettava...
    boh... certo ch'è strano questo linguaggio...

    EDIT:

    Sempre di C++ si parla, quindi credo si possa postare.
    Allora, sto seguendo le lezioni di questo tutorial, che dovrebbero permettere di creare un "semi-giochino" in C++, tanto per prenderci la mano, e soprattutto per capirci qualcosa.
    Sono arrivato a metà della lezione 4 (ovvero nella "trasformazione" del codice nella maniera "Object Oriented").
    Il problema è che il codice che dice quella lezione a me non l'accetta; mi dà un casino di errori...
    dove sarebbe il problema?
    Ultima modifica di Zorinik : 06-05-2007 alle ore 13.39.09

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da Zorinik
    Trovato!
    Ci voleva il ".h" in:
    #include <iostream>
    in pratica doveva essere così:
    #include <iostream.h>

    Il bello è che nella versione precedente del programma me l'accettava...
    boh... certo ch'è strano questo linguaggio...
    Il C++ un po' ostico c'è, però quelli che hanno scritto l'IDE sono un po' fuori. E ti dico perché: ma che li fanno a fare gli standard se poi non vengono rispettati? 'iostream.h' è deprecato, si scrive '<iostream>' e basta. Tratto da http://www.devx.com/tips/Tip/14447:

    First, the .h notation of standard header files was deprecated more than 5 years ago. Using deprecated features in new code is never a good idea.
    Citazione Originalmente inviato da Zorinik
    [...]
    Il problema è che il codice che dice quella lezione a me non l'accetta; mi dà un casino di errori...
    dove sarebbe il problema?
    Quali sono gli errori del compilatore?

  5. #5
    Guest

    Predefinito

    Se non usare il namespace std il programma segnalerà dei warning..

    se volete utilizzare la vecchia versione C++ può andare bene usare

    #include<iostream.h>

    se invece volete utilizzare la nuova versione

    #include<iostream>
    using namespace std;
    main()..ecc

    così dovrebbe andare...

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da toninosite
    Se non usare il namespace std il programma segnalerà dei warning..
    [...]
    Esatto, ma AFAIK ciò non è relativo all'inclusione della corretta versione della libreria, quanto invece all'utilizzo del namespace. Dunque o si indica il namespace con la direttiva using (come hai già detto), oppure lo si deve specificare ogni qual volta è necessario far uso delle apposite funzioni. Tipo 'std::cout << "testo\n";' -- 'std::cin >> variabile', ecc.

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da fgr
    Quali sono gli errori del compilatore?
    In questo momento nn ce li ho davanti, ma un codice del genere (è prima del main) nn dovrebbe andare bene?

    ps. ne ho preso uno fra i tanti, visto che la sintassi è la stessa

    Codice:
    class Giocatore{
    int x,y;
    public:
    Giocatore();
    ~Giocatore();
    void Vedi();
    int Putx();
    int Puty();
    };
    
    Giocatore::Giocatore(){
    sprite = load_bmp("player.bmp",colori); 
    x=10; y=30;
    }
    Ecco, a me dava ad esempio degli errori alla linea "Giocatore::Giocatore(){"...

    boh...

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da Zorinik
    L'ho scaricato oggi, perché da pochi giorni ho iniziato a mettere mano sul C++.
    Sei arrivato troppo presto alle classi.........

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da toninosite
    Sei arrivato troppo presto alle classi.........
    Beh scusa secondo te che dovevo fare?
    E poi una buona guida che spiega bene la programmazione orientata ad oggetti esiste gratis online?
    Ultima modifica di Zorinik : 07-05-2007 alle ore 14.32.34

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da Zorinik
    In questo momento nn ce li ho davanti, ma un codice del genere (è prima del main) nn dovrebbe andare bene?

    ps. ne ho preso uno fra i tanti, visto che la sintassi è la stessa

    Codice:
    class Giocatore{
    int x,y;
    public:
    Giocatore();
    ~Giocatore();
    void Vedi();
    int Putx();
    int Puty();
    };
    
    Giocatore::Giocatore(){
    sprite = load_bmp("player.bmp",colori); 
    x=10; y=30;
    }
    Ecco, a me dava ad esempio degli errori alla linea "Giocatore::Giocatore(){"...

    boh...
    In C/C++ c'è la separazione fra dichiarazioni e definizioni. Le prime vanno in file header, le seconde in un file a parte (l'estensione non è tassativa), e ci sono delle regole classiche da seguire (che qualunque buon libro deve riportare). Anzi per il C la dichiarazione dei metodi (o funzioni) è stata resa obbligatoria.
    La linea «Giocatore::Giocatore(){», è la definizione del costruttore per la classe Giocatore (di default, senza parametri). Così a prima vista, deduco questo:
    - sprite è una variabile dichiarata da qualche parte, probabilmente privata, inizializzata con il metodo 'load_bmp' (magari anch'esso privato, e sicuramente 'static' poiché non è richiamato come istanza di alcun oggetto); stessa cosa per 'x' e 'y'.
    Trovare gli errori non è proprio immediato, magari va incluso qualche file header (o del sorgente).

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •