Pagina 1 di 1

problemi compilazione c++ KDevelop

Inviato: ven 19 ago 2011, 16:43
da robdb
Scusate la domanda banale ma utilizzo Linux per la prima volta. Devo utilizzare KDevelop per sviluppare un'applicazione crittografica (per l'esattezza il cifrario di Vigenere) in c++. Il codice che ho scritto è questo

Codice: Seleziona tutto

#include <iostream.h>
#include <stdlib.h>
#include <string.h>


int main()
{
        string keyword;
        string messaggio;
        int crypted;
        int real_difference;
        int i=0;
        int k;
        int l;

        cout<<"Enter the keyword : ";
        getline(cin, keyword);



        cout<<"Enter the message you want to crypt : ";
        getline(cin, messaggio);

        k = keyword.length();
        l = messaggio.length();

        loop1:
        if(k < l); //used to even out the keyword and the sentence
        {          //to change each letter               
               keyword = keyword + keyword;
               k = keyword.length();
               if(k < l)
               goto loop1;
        }

                cout<<"\n\n";
                while (i<= messaggio.length()) //records length and uses string as array
                {
                        keyword[i] -= 'a'- 1;


                        if((messaggio[i] + keyword[i]) > 'z') //If crypted letter goes beyond 'z'
                                crypted = 'a' + (keyword[i]+messaggio[i] - 'z') - 1;

                        else if(messaggio[i] == 32) // If letter is a space
                                crypted = messaggio[i];

                        else
                        crypted = messaggio[i] + keyword[i]; //Crypting


                        cout<<(char)crypted; //Prints out the crypted letter
                        i++;

                        if(i>= messaggio.length())
                        break;
                }




        return 0;


        }
eseguo senza problemi le operazioni autotools e configure, ma al momento di eseguire il programmami compare il seguente messaggio di errore:

Codice: Seleziona tutto

cd '/root/prova/debug/./src' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" LC_MESSAGES="C" LC_CTYPE="C"
gmake -k prova

compilazione di main.cpp (g++)

In file included from /usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/backward/iostream.h:31,
from /root/prova/src/main.cpp:1:
/
usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/backward/backward_warning.h:32:2: warning:
#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++ standard.
Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>.
To disable this warning use -Wno-deprecated.
/root/prova/src/main.cpp:65:10: warning: no newline at end of file
/root/prova/src/main.cpp:
In function 'int main()':

/root/prova/src/main.cpp:8: error: 'string' was not declared in this scope

/root/prova/src/main.cpp:8: error: expected `;' before 'keyword'

/root/prova/src/main.cpp:9: error: expected `;' before 'messaggio'

/root/prova/src/main.cpp:17: error: 'keyword' was not declared in this scope

/root/prova/src/main.cpp:22: error: 'messaggio' was not declared in this scope

/root/prova/src/main.cpp:28: warning: empty body in an if-statement

/root/prova/src/main.cpp:11: warning: unused variable 'real_difference'

gmake: *** [main.o] Error 1

gmake: Target `prova' not remade because of errors.

*** Uscito con stato: 2 ***
qualche idea su come risolverlo?
grazie

Re: problemi compilazione c++ KDevelop

Inviato: ven 19 ago 2011, 16:50
da ocman
della gente....lol...

Re: problemi compilazione c++ KDevelop

Inviato: ven 19 ago 2011, 18:51
da Toni
prova ad inserire

Codice: Seleziona tutto

#include <string>
using namespace std;
e togli #include <string.h>

Re: problemi compilazione c++ KDevelop

Inviato: ven 19 ago 2011, 22:38
da m0rdr3d
Usa iostream e string senza '.h', mentre per stdlib ed altre librerie di sistema (come math, stdio, ecc), utilizza 'cstdlib' invece di 'stdlib.h' (in pratica rimuovi il .h e aggiungi la c come prefisso).

Inoltre, finché hai un solo file, ti conviene utilizzare direttamente g++ per compilare, senza aggiungere complicazioni con gli autotools. Una volta risolto il problema puoi pensare ad un makefile.

Infine, in particolar modo se programmi, ti consiglio di utilizzare un utente che non sia root, in modo da non rischiare di fare danni di nessun tipo con il sistema.

Ciao e buona fortuna!

Edit: dimenticavo il namespace! Come ti è stato suggerito aggiungi "using namespace std;" dopo gli include.