begin process at 2012 05 29 21:41:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Probleme de preprocesseur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme de preprocesseur

jeudi 1 mai 2008 à 22:41:21 | Probleme de preprocesseur

alphaone

Bonjour, j'ai un fichier d'en tête .h inclut partout ou il y as:

#ifndef INCLUDE_ENV_H
#define INCLUDE_ENV_H

//debug level, 0: no debug, 10 critical and internal error, 50 show main activity, 90 debug mode, more than 100 is useless.
#define DEBUG 100

#if (DEBUG>0)
    #define DEBUGCONSOLE(a,b) debug_console_fonction(a,b)
    #include <iostream>
    using namespace std;
    #include <QString>
    void debug_console_fonction(int number,QString text)
    {
        if(number>=DEBUG)
            cout << qPrintable(text) << "\n";
    }
#else
    #define DEBUGCONSOLE(a,b) //a,b
#endif
//...
#endif

Et il me dit que je redéfini la fonctiondebug_console_fonction():

CopyThread.o: In function `debug_console_fonction(int, QString)':
CopyThread.cpp:(.text+0x710): multiple definition of `debug_console_fonction(int, QString)'
AddFolderThread.o:AddFolderThread.cpp:(.text+0xf20): first defined here
Ewindow.o: In function `debug_console_fonction(int, QString)':
Ewindow.cpp:(.text+0x130): multiple definition of `debug_console_fonction(int, QString)'
AddFolderThread.o:AddFolderThread.cpp:(.text+0xf20): first defined here
FEwindow.o: In function `debug_console_fonction(int, QString)':
FEwindow.cpp:(.text+0xaa0): multiple definition of `debug_console_fonction(int, QString)'
AddFolderThread.o:AddFolderThread.cpp:(.text+0xf20): first defined here
main.o: In function `debug_console_fonction(int, QString)':
main.cpp:(.text+0x120): multiple definition of `debug_console_fonction(int, QString)'
AddFolderThread.o:AddFolderThread.cpp:(.text+0xf20): first defined here
Mwindow.o: In function `debug_console_fonction(int, QString)':
Mwindow.cpp:(.text+0x16c0): multiple definition of `debug_console_fonction(int, QString)'
AddFolderThread.o:AddFolderThread.cpp:(.text+0xf20): first defined here

jeudi 1 mai 2008 à 22:49:36 | Re : Probleme de preprocesseur

SAKingdom

Membre Club
Normal. Partout ou tu inclus ton header, il redéfinit ta fonction.
2 solutions:
soit tu déclare cette fonction dans un .c puis tu ne met que son prototype dans le header
soit tu déclare cette fonction en inline:

inline void debug_console_fonction(int number,QString text)
    {
        if(number>=DEBUG)
            cout << qPrintable(text) << "\n";
    }


C++ (@++)

jeudi 1 mai 2008 à 22:54:44 | Re : Probleme de preprocesseur

alphaone

Pourtant j'ai mit
#ifndef INCLUDE_ENV_H
#define INCLUDE_ENV_H
#endif
qui enpéche le redefinition multiple.

Ca fait quoi inline?
jeudi 1 mai 2008 à 23:07:59 | Re : Probleme de preprocesseur

SAKingdom

Membre Club
Non apparemment, cette solution (inline) ne fonctionne pas avec gcc.

Prend l'autre solution dans ce cas.


C++ (@++)

jeudi 1 mai 2008 à 23:13:48 | Re : Probleme de preprocesseur

alphaone

Re, je veux comprendre:
Pourtant j'ai mit
#ifndef INCLUDE_ENV_H
#define INCLUDE_ENV_H
#endif
qui enpéche le redefinition multiple.

[ Lien ]
jeudi 1 mai 2008 à 23:34:26 | Re : Probleme de preprocesseur

SAKingdom

Membre Club
Réponse acceptée !
Si tu veux utiliser printf dans 2 fichiers .c/.cpp, il faudra bien inclure stdio.h dans chacun d'eux. Même principe ici.
#ifndef ...
#define...
...
#endif
empêche seulement que le .h soit réinclus plusieurs fois dans un même fichier source (.c/.cpp).

C++ (@++)



Cette discussion est classée dans : fonction, int, console, debug, qstring


Répondre à ce message

Sujets en rapport avec ce message

Pas compris les arguments [ par Bog ] Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c Pas compris les arguments [ par Bog ] Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c Prob grave avec Visual... [ par Nuage ] Voila, j'ai un grave problème avec le debug de Visual. Je fait un bête code source, avec une fonction pour créer un élement d'une pile, et une fonctio scanf() [ par clb ] bonjour à tous,j'ecris par exemple :int fonction(){ if(true) return 0; else return -1}dans main, si cette fonction retourne 0,alors j'appli GTK+-2.0, saisie d'un int ! [ par zazar ] G me demande si la réalisation d'une fonction retournant un int qu'un utilisateur à rentré par le biais d'une fenetre nécessite forcément une conversi Reference pour arguments de fonction! [ par CoxJoe ] Hello,Voila mon code qui est tres simple :# include # include using namespace std;// fonction pour entrer des lettresvoid getchar(char& name[]){ cout la fonction gotoxy(int abs,int ord) [ par jimtruand ] Salut !Je cherche la fonction equivalente a gotoxy(arg1,arg2) de borlandc++ sous Visualc++ ?C'est une fonction qui nous permet de placer le curseur ou 2 return d'une fonction [ par Silver360 ] Hello tout le monde!Je voulais savoir s'il est possible qu'une fonction retourne 2 paramètres ( dans le genre int int mafonction() ) ou si je dois fai Fonction déclaré en static [ par crocejf2000 ] Quel est la différence entre une fonction déclaré comme suit :int NomClasse::Nomfonctrion(int j){blabla}et une fonction déclaré en static :static int fonction d'alloaction dynamique [ par tomsawyerbelgique ] Pour une allocation dynamique d'un tableau à deux dimensions. Comme celle ci:cout // Initalisation int** tab = new int*[p_size1_tab]; for(in


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales