Multiple definition of ... first define here
gunnermens
-
gunnermens -
gunnermens -
Bonjour,
je fait un programme sur code block.
Le programme compilait bien, mais il commençait à être gros pour un seul fichier.
J'ai donc créer d'autre fichier pour alléger le main.c.
Les fichier sont bien ajouter au projet.
Les .h et les .c sauf le main.c contiennent #ifndef #define code #endif.
aucun fichier .c n'est include.
tout les fichier .h nécessaires sont include.
j'obtiens tout de même le message d'erreur: multiple definition of "nom de la variable"
Il s'agit de mes variables globales que j'ai mis dans un .h
ces variables ne sont initialisé nul part d'autre.
merci de bien vouloir m'aider à résoudre ce problème.
je fait un programme sur code block.
Le programme compilait bien, mais il commençait à être gros pour un seul fichier.
J'ai donc créer d'autre fichier pour alléger le main.c.
Les fichier sont bien ajouter au projet.
Les .h et les .c sauf le main.c contiennent #ifndef #define code #endif.
aucun fichier .c n'est include.
tout les fichier .h nécessaires sont include.
j'obtiens tout de même le message d'erreur: multiple definition of "nom de la variable"
Il s'agit de mes variables globales que j'ai mis dans un .h
ces variables ne sont initialisé nul part d'autre.
merci de bien vouloir m'aider à résoudre ce problème.
A voir également:
- C multiple definition of first defined here
- Ecran multiple pc - Guide
- Here wego - Guide
- Salaat first - Télécharger - Histoire & Religion
- Path of exile 2 - Guide
- Excel cellule choix multiple - Guide
7 réponses
Bonjour,
Comme tu peux t'en douter, si ton compilateur signale une erreur, c'est que ton code contient une erreur.
Merci donc de poster ton code et notamment toutes les définitions de ta variable à l'origine de l'erreur.
Comme tu peux t'en douter, si ton compilateur signale une erreur, c'est que ton code contient une erreur.
Merci donc de poster ton code et notamment toutes les définitions de ta variable à l'origine de l'erreur.
#ifndef ACTION_C
#define ACTION_C
Pas besoin dans les .c (puisqu'un .c ne s'inclue pas).
Sinon pour les variables globales, c'est vivement déconseillé de les utiliser de cette façon. Cela s'utilise plutôt pour des constantes. Mais pas pour le reste. Dans ton cas, tu n'as besoin d'aucunes variables globales. Je te conseille donc de revoir ton code.
Par tout hasard, n'aurais-tu pas fait un int i; ou quelque chose de ce genre dans ton main ?
Cdlt,
#define ACTION_C
Pas besoin dans les .c (puisqu'un .c ne s'inclue pas).
Sinon pour les variables globales, c'est vivement déconseillé de les utiliser de cette façon. Cela s'utilise plutôt pour des constantes. Mais pas pour le reste. Dans ton cas, tu n'as besoin d'aucunes variables globales. Je te conseille donc de revoir ton code.
Par tout hasard, n'aurais-tu pas fait un int i; ou quelque chose de ce genre dans ton main ?
Cdlt,
Merci pour la réponse rapide.
voici les .h et le .c qui sont en défaut
quand la fonction de action.c est dans le main.c, ca compile.
fonctions.h:
#ifndef FONCTIONS_H
#define FONCTIONS_H
/****************************************
fonctions
****************************************/
void items(void);
void points(void);
void actionf (void);
void couperdubois (void);
void pecherdupoisson (void);
void coupe (void);
void peche (void);
void manger (void);
void passivite (void);
void load (void);
void save (void);
void delaisms (int ms);
void acheter (void);
void achat (void);
void vendre (void);
void vente (void);
void fabriquer (void);
#endif // FONCTIONS_H_INCLUDED
variablesGlobales.h
#ifndef VARIABLESGLOBALES_H
#define VARIABLESGLOBALES_H
/****************************************
variables globales
****************************************/
FILE* sauvegarde = NULL;
float bucheron = 0;
float pecheur = 0;
int temps = 0;
int hache = 0;
int caneapeche = 0;
int quitter = 0;
int choix = 0;
int bois = 0;
int typePoisson = 0;
int typeBois = 0;
int poissons = 0;
int sommeil = 100;
int energie = 30;
int principal = 0;
int actionb = 0;
float i = 0;
float nombreskills = 4; //nombre de varible d'expérience
int XP = 0;
int niveau = 1;
int argent = 0;
float acheteur = 0;
float vendeur = 0;
#endif // VARIABLESGLOBALES_H_INCLUDED
actions.c
#include <stdio.h>
#include <stdlib.h>
#include "fonctions.h"
#include "variablesGlobales.h"
#ifndef ACTION_C
#define ACTION_C
//Afficher les action disponible si le joueur choisi l'option 6 du menu principal
void actionf(void)
{
actionb = 0;
while (principal == 0 && energie > 0 && sommeil > 0)
{
printf ("Votre niveau de sommeil est %d\nVotre niveau d'energie est %d\n\n", sommeil, energie);
printf ("Quel action voulez vous faire?\n\n");
printf ("1. Revenir au menu principal\n");
printf ("2. manger\n");
printf ("3. Couper du bois\n");
printf ("4. Pecher du poisson\n");
printf ("5. Fabriquer un objet\n");
printf ("6. Vendre un item\n");
if (argent > 0)
{
printf ("7. Acheter un item\n");
}
scanf ("%d",&choix);
switch(choix)
{
case 1:
{
system("cls");
principal = 1;
break;
}
case 2:
{
system("cls");
manger();
break;
}
case 3:
{
system("cls");
couperdubois();
break;
}
case 4:
{
system("cls");
pecherdupoisson();
break;
}
case 5:
{
system("cls");
fabriquer();
break;
}
case 6:
{
system("cls");
vendre();
break;
}
if (argent > 0)
{
case 7:
{
system("cls");
acheter();
break;
}
}
default:
{
printf ("Choisi un nombre ecrit ci-haut/n");
break;
}
}
}
} // actions
#endif
Header du main (il est trop long pour mettre ici)
#include <stdio.h>
#include <stdlib.h>
#include "fonctions.h"
#include "variablesGlobales.h"
voici les .h et le .c qui sont en défaut
quand la fonction de action.c est dans le main.c, ca compile.
fonctions.h:
#ifndef FONCTIONS_H
#define FONCTIONS_H
/****************************************
fonctions
****************************************/
void items(void);
void points(void);
void actionf (void);
void couperdubois (void);
void pecherdupoisson (void);
void coupe (void);
void peche (void);
void manger (void);
void passivite (void);
void load (void);
void save (void);
void delaisms (int ms);
void acheter (void);
void achat (void);
void vendre (void);
void vente (void);
void fabriquer (void);
#endif // FONCTIONS_H_INCLUDED
variablesGlobales.h
#ifndef VARIABLESGLOBALES_H
#define VARIABLESGLOBALES_H
/****************************************
variables globales
****************************************/
FILE* sauvegarde = NULL;
float bucheron = 0;
float pecheur = 0;
int temps = 0;
int hache = 0;
int caneapeche = 0;
int quitter = 0;
int choix = 0;
int bois = 0;
int typePoisson = 0;
int typeBois = 0;
int poissons = 0;
int sommeil = 100;
int energie = 30;
int principal = 0;
int actionb = 0;
float i = 0;
float nombreskills = 4; //nombre de varible d'expérience
int XP = 0;
int niveau = 1;
int argent = 0;
float acheteur = 0;
float vendeur = 0;
#endif // VARIABLESGLOBALES_H_INCLUDED
actions.c
#include <stdio.h>
#include <stdlib.h>
#include "fonctions.h"
#include "variablesGlobales.h"
#ifndef ACTION_C
#define ACTION_C
//Afficher les action disponible si le joueur choisi l'option 6 du menu principal
void actionf(void)
{
actionb = 0;
while (principal == 0 && energie > 0 && sommeil > 0)
{
printf ("Votre niveau de sommeil est %d\nVotre niveau d'energie est %d\n\n", sommeil, energie);
printf ("Quel action voulez vous faire?\n\n");
printf ("1. Revenir au menu principal\n");
printf ("2. manger\n");
printf ("3. Couper du bois\n");
printf ("4. Pecher du poisson\n");
printf ("5. Fabriquer un objet\n");
printf ("6. Vendre un item\n");
if (argent > 0)
{
printf ("7. Acheter un item\n");
}
scanf ("%d",&choix);
switch(choix)
{
case 1:
{
system("cls");
principal = 1;
break;
}
case 2:
{
system("cls");
manger();
break;
}
case 3:
{
system("cls");
couperdubois();
break;
}
case 4:
{
system("cls");
pecherdupoisson();
break;
}
case 5:
{
system("cls");
fabriquer();
break;
}
case 6:
{
system("cls");
vendre();
break;
}
if (argent > 0)
{
case 7:
{
system("cls");
acheter();
break;
}
}
default:
{
printf ("Choisi un nombre ecrit ci-haut/n");
break;
}
}
}
} // actions
#endif
Header du main (il est trop long pour mettre ici)
#include <stdio.h>
#include <stdlib.h>
#include "fonctions.h"
#include "variablesGlobales.h"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question