[compilation] impossible de compiler un .cpp

Salut
Je n'arrive pas à compiler avec le terminal (=konsole) un fichier tout simple coder en c++.

Voici ce que je fait :

[romain@localhost test]$ ls
baba.h*  test2.cpp  test2.cpp~  test.cpp  test.cpp~

[romain@localhost test]$ make test
g++     test.cpp   -o test
test.cpp: In function `int maint()':
test.cpp:6: error: `cout' undeclared (first use this function)
test.cpp:6: error: (Each undeclared identifier is reported only once for each function it appears in.)
make: *** [test] Erreur 1


et dans test.cpp il y a :

#include <iostream>

int main () {
cout<<"SALUT ";
return 0;
}


je ne sais pas comment faire pour combler ces erreur :(

merci d'avance

a+

7 réponses

  1. std c'est parceque jai mi iostream et non iostream.h ??
    1. Oui c'est ça.
      Si tu mets iostream.h, tu risques d'avoir des warning à la compilation et afin
      de ne plus les avoir, faudra mettre -Wno-deprecated en option du compilateur.
  2. merci ça marche !

    mais pourquoi il faut faire :

    g++ -c test.cpp
    g++ -o test test.cpp
    ./test

    c'est un peu long, car make c'était pratique :(

    sinon le probleme avec le int main c'est que j'avai marqué "int maint" -> faute de frappes

    Et aussi pourquoi il faut std:: ?? car j'avai jamais vu ça ??

    merci en tout cas

    a+
    1. Salut

      Quand tu compiles test.cpp

      g++ -c test.cpp
      g++ -o test test.cpp
      ./test


      limite
      1. RE,
        Là tu as un problème de signature sur la fonction main.
        Essaies avec
        int main( int, char**)
        1. salut !
          merci mais j'ai toujours des erreurs :

          [romain@localhost test]$ make test
          g++     test.cpp   -o test
          /usr/lib/gcc/i586-mandrake-linux-gnu/3.4.3/../../../crt1.o(.text+0x18): In function `_start':
          ../sysdeps/i386/elf/start.S:115: undefined reference to `main'
          collect2: ld returned 1 exit status
          make: *** [test] Erreur 1
          
          1. Salut

            #include <iostream>
            using namespace std;
            
            int main () {
            cout<<"SALUT ";
            return 0;
            }


            Merci Crabs

            limite
            1. Salut,
              cout est défini dans l'espace de nom std. Donc 2 solutions :
              soit: tu utilises std::cout à la place de cout
              soit : tu rajoutes la directive suivante après les lignes d'include :
              using namespace std ;

              A+, crabs