IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Probème de compilation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut Probème de compilation
    Salut tout le monde j'éspère pouvoir trouver de l'aide ;-)
    Voici mon problème quoi surtout mon problème de compil donc voici déja mes codes:
    un fichier "cmd_line.cpp":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <iostream>
    #include <string>
    #include <vector>
    #include "cmd_line.h"
     
    using std::cout;
    using std::endl;
    using std::string;
    using std::vector;
     
    void parseCmdLine(int argc,char const * argv[], bool& reverse, int& step)
    {
            if(argc == 1)
            cout << "pas de commandes !" << endl;
            else if(argv[2] == "-h" || argv[2] == "--help"){
            cout << "Usage: <nomprog> [option...]" << endl << endl
            << "Options:" << endl
            << "  -r, --reverse: views input lines backwards." << endl
            << "  --step <step>: defines a strictly positive step between" << endl
            << "                 displayed lines.  Defaults to 1 (one)." << endl
            << "  -h, --help:    displays this usage info." << endl;
            }
            else if(reverse == true)
            cout << "on inverse" << endl
            << "avec un pas de " << step << " lignes" << endl;
            else
            cout << "on inverse pas" << endl;
    }
    un fichier "cmd_line.h":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifndef _CMD_LINE_H
    # define _CMD_LINE_H
     
    void parseCmdLine(int argc, char const * argv[], bool& reverse, int& step);
     
    #endif /* !_CMD_LINE_H */
    et enfin mon fichier "main.cpp":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include "cmd_line.h"
     
    int main(int argc, char const * argv[])
    {
            bool reverse = false;
            int step = 1;
            parseCmdLine(argc, argv, reverse, step);
            return 0;
    }
    et lorsque je compil j'obtiens l'erreur :
    /tmp/cccmSCKl.o: In function `main':
    main.cpp.text+0x37): undefined reference to `parseCmdLine(int, char const**, bool&, int&)'
    collect2: ld returned 1 exit status
    $

    et je ne vois pas d'ou cela proviens je ne comprends pas car lorsque dans mon main.cpp je retire la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseCmdLine(argc, argv, reverse, step);
    cela compil et je ne vois pas ou est mon erreur.

    Je vous remercie d'avance pour votre aide ;-)

  2. #2
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Tu as oublié de linker avec le fichier qui va bien dans ton makefile ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Invité de passage
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1
    Par défaut
    Comment compiles-tu?

    g++ cmd_line.cpp main.cpp -o main

    En passant, la comparaison de char* avec == est déconseillée (et ne fonctionnera pas?!)... utilise strcmp ou met le en string

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par plegault
    Comment compiles-tu?

    g++ cmd_line.cpp main.cpp -o main

    En passant, la comparaison de char* avec == est déconseillée (et ne fonctionnera pas?!)... utilise strcmp ou met le en string
    La comparaison de variables de type char* avec l'opérateur == n'est pas seulement déconseillée, elle est sémantiquement incorrecte. En l'occurence, C++ place les arguments de la lignes de commande dans un tableau de char*. On a donc pas le choix ici. On a alors deux solutions:
    1) transformer les valeurs pointées par les éléments de argv en std::string par simple affectation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string argv_string = argv[2];
    if (argv_string == "-h")
    2) utiliser strcmp comme conseillé par plegault:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strcmp(argv[2], "-h") == 0)
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. Probème de compilation d'un projet qt avec cmake.
    Par Battant dans le forum Systèmes de compilation
    Réponses: 0
    Dernier message: 13/01/2013, 23h48
  2. [Débutant] Probème de compilation
    Par -kXii- dans le forum C#
    Réponses: 5
    Dernier message: 31/12/2012, 12h51
  3. Réponses: 1
    Dernier message: 12/03/2012, 23h41
  4. Vitesse de compilation
    Par srvremi dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/07/2002, 16h49
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo