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 :

Problème déclaration multiple de fonction


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Problème déclaration multiple de fonction
    Bonjour,

    Dans le cadre d'un projet où j'utilise le C++ j'ai des soucis de déclaration multiple de fonction.

    Mon code est oraganisé de la manière suivante:

    Main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include<stdio.h>
    #include <time.h>
    #include <math.h>
    #include "bmpusmp.h"
     
    int main(int argc, char* argv[])
     
    {
          ...
          return 0;
    }
    secondary_functions.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
     
    #include<stdio.h>
    #include <time.h>
    #include <math.h>
    #include "getopt.h"
    #include "bmpusmp.h"
    #include "secondary_functions.h"
     
     
    void free_imatrix(int **m, long nrl, long nrh, long ncl, long nch)
     
    {
    	...
    }
    secondary_function.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifndef SECONDARY_FUNCTIONS_H
    #define SECONDARY_FUNCTIONS_H
     
    #define NR_END 1
    #define FREE_ARG char*
     
    void free_imatrix(int**, long, long, long, long);
     
    #endif
    bmpusmp.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #ifndef BMPUSMP_H
    #define BMPUSMP_H
     
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
     
    ... fonctions utilisées dans le main 
     
    #endif

    Quand je compile mon code j'ai des erreurs du type "multiple declaration de {fonction} (qui sont déclarées et définies dans mon bmpusmp.f et appelées dans mon main). Pourtant je ne devrai pas avoir de problèmes comme j'ai utilisé le #indef /#define/#endif ?

    Merci pour votre aide, et faites moi signe si je suis pas assez précis sur ce que je donne de mon code.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2011
    Messages : 147
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    A quel moment tu appelles le fichier "secondary_function.h" dans ton main.

    Ici, ton main ne peux pas avoir acces a ces fonction car il ne sait pas ou elle se trouve.

  3. #3
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je ne peux expliquer l'erreur mais le problème peut se solutionner en mettant la fonction dans un namespace ou une structure.
    Ou bien en déclarant cette fonction "static".

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    C'est une erreur de ma part dans mon premier post. J'avais bien mis le include pour mon fichier function_secondary. Et effectivement ça m'a l'air de fonctionner avec static, merci par contre je comprends pas pourquoi ça ne marche pas avec les ifndef/define/endif alors que c'est leur objectif de traiter les déclarations multiples de fonction ^^

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 960
    Points
    32 960
    Billets dans le blog
    4
    Par défaut
    Faudrait voir le code réel, parce que ce que tu montres n'est pas source du bug.

    Peut-être un include malheureux d'un cpp. Un cpp compilé 2 fois.
    En lisant bien la sortie d'erreur tu sauras quel unité de compilation est foireuse.

    static, ou le namespace anonyme, va masquer l'erreur, mais c'est pas une bonne pratique.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. [AC-2010] Problème déclaration fonction VBA 64bits
    Par Tomtomtvn dans le forum VBA Access
    Réponses: 8
    Dernier message: 14/03/2013, 15h50
  2. Déclaration multiple d'une fonction
    Par zebulon94 dans le forum Langage
    Réponses: 2
    Dernier message: 26/02/2010, 11h57
  3. [JS] Problème déclaration de fonction
    Par glloq8 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/09/2005, 10h22
  4. Réponses: 4
    Dernier message: 19/04/2004, 13h41
  5. Déclaration multiple d'une fonction
    Par Julien C. dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2003, 16h38

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