Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec fichier.cpp

cout undeclared o_O

Sujet résolu
    10 février 2008 à 16:23:56

    Bonjour, je viens de créer un fichier.cpp dans lequel je range quelques unes de mes fonctions :

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include "main.h"
    4. /* Sous programmes demandant les renseignements d'un client */
    5. void Renseignement(Client emp)
    6. {
    7.     cout << "test";
    8. }


    Et la, O surprise, une erreur qui me dit que mon cout n'est pas déclaré... Qu'est ce donc que cette blague? Merci de votre attention.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      10 février 2008 à 16:43:24

      Salut,

      ça serait pas mieux avec std:: avant le cout ?
      • Partager sur Facebook
      • Partager sur Twitter
        10 février 2008 à 16:55:49

        Effectivement, j'ai aps l'habitde encore de la programmation modulaire :p

        J'ai mis ceci dans le main :
        using namespace std;

        Mais j'ai pas pensé a le mettre dans le fichier.cpp

        (tous comme mon autre problème je n'avais pas remis #include "main.h")

        --> Pour conclure si j'ai bien compris, lorsque je créé un fichier .cpp, je dois réinclure et redéclarer tous ce qu'il faut? (#include, #define, etc...)

        Merci pour la piste ;)
        • Partager sur Facebook
        • Partager sur Twitter
          10 février 2008 à 18:01:40

          non pas besoin de redéclarer : par exemple si tu as défini quelque chose dans un header, inclut juste le header et le compilo comprendras de quoi tu parles ;)
          • Partager sur Facebook
          • Partager sur Twitter
            10 février 2008 à 18:16:07

            Donc concernant mes variables globales, je les mets aussi dans un header et le tour est joué? :)

            Mais je devrais remettre toutes les librairies nécessaires au .cpp quand même, vrai?
            • Partager sur Facebook
            • Partager sur Twitter
              11 février 2008 à 18:48:01

              ben oui faut remattre les librairies hein, elles ne s'incluent pas toutes seules ... par contre les variables globals je ne suis pas trop sur honnetement
              • Partager sur Facebook
              • Partager sur Twitter
                11 février 2008 à 18:55:19

                Fais des tests pour voir si le compilo gueule. Mais si tu définis une variable globale dans un header, il faut l'inclure dans le fichier .cpp qui réclame cette variable globale.

                C'est pour une constante ?
                • Partager sur Facebook
                • Partager sur Twitter
                  11 février 2008 à 21:30:03

                  Si tu met ta variable globale dans un .h elle sera inclus dans X unité de compilation (soit X équivalent au nombre de fichier .cpp que tu compiles qui inclus ton .h)

                  Donc tu vas avoir X fois la même variable : erreur déclaration multiple!

                  Donc pour conclure le compilateur s'éxécute en 2 phases. D'abord la compilation de chaque .cpp (On appel ça aussi "d'unité de compilation" parce qu'on parle aussi de tout les .h inclus dans CE fichier). Cette étape est aussi séparée en deux pré-compilation et compilation. Si le programme rencontre un nom qualifé qui n'a pas encore été défini mais dont il connait la signature, il fait comme si de rien était et continu la compilation. Après chaque unité le compilateur crée un fichier .o qui contient toutes les informations nécessaires à la 2e phase.

                  C'est à cette dernière phase nommée l'édition des liens ("linking" ou "link editing") que tout les .o seront transformés en un .exe si tout se passe bien.


                  P.S. les "using namespace" ne doivent jamais être utilisé dans les .h, et encore moi je n'en met jamais. Sauf en cas de
                  1. // Ce n'est qu'un exemple hein?!
                  2. monns::monnsincl::MaClasse::MaSousClasse monObjet;
                  3. monns::monnsincl::MaClasse::MaSousClasse::MonType t = monObjet.GetValeur();
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 février 2008 à 14:55:00

                    Très bien, merci pour toute vos réponses, je vais faire une série de test pour voir ce qui fonctionne ou pas aussi ;)

                    Merci.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problème avec fichier.cpp

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown