[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. 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
    1. Salut

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


      Merci Crabs

      limite
      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. RE,
          Là tu as un problème de signature sur la fonction main.
          Essaies avec
          int main( int, char**)
          1. Salut

            Quand tu compiles test.cpp

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


            limite
            1. 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. 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.