Galn_
Messages postés2Date d'inscriptionjeudi 24 novembre 2016StatutMembreDernière intervention24 novembre 2016
-
Modifié par Galn_ le 24/11/2016 à 16:42
Galn_
Messages postés2Date d'inscriptionjeudi 24 novembre 2016StatutMembreDernière intervention24 novembre 2016
-
24 nov. 2016 à 17:27
Bonjour,
J'ai un problème sur une compilation en C avec Visual Studio qui me retourne une l'erreur LNK2005. Voici mon code :
pile.h
#ifndef _PILE_
#define _PILE_
// librairies
#include <stdbool.h>
// constantes
#define max 99
// types
typedef int element;
typedef element data[max];
typedef struct
{
data contenu;
int sommet;
} pile;
// prototypes
pile init_pile();
bool pile_vide (pile);
bool pile_pleine (pile);
pile empiler(pile, element);
pile depiler(pile);
element sommet_pile(pile);
int taille_pile(pile);
bool piles_egales(pile,pile);
#endif
pile.c
//Librairies
#include <stdio.h>
#include "pile.h"
pile init_pile()
{
pile p;
p.sommet = max;
int i;
for (i = 0; i <= p.sommet; i++)
{
p.contenu[i] = 0;
}
return p;
}
bool pile_vide(pile p)
{
int i = 0;
p.sommet = taille_pile(p);
bool verif = true;
while (verif && (i <= p.sommet))
{
if (p.contenu[i] != 0)
{
verif = false;
}
i++;
}
return verif;
}
bool pile_pleine(pile p)
{
int i = 0;
p.sommet = taille_pile(p);
bool verif = true;
while (verif && (i <= p.sommet))
{
if (p.contenu[i] != 0)
{
verif = true;
}
i++;
}
return verif;
}
pile empiler(pile p, element e)
{
int i = 0;
p.sommet = taille_pile(p);
if (i == p.sommet)
{
return p;
}
else
{
p.contenu[i] = e;
return p;
}
}
pile depiler(pile p)
{
p.sommet = taille_pile(p);
int i = p.sommet;
while (i >= 0)
{
printf("%d\n", p.contenu[i]);
}
return p;
}
element sommet_pile(pile p)
{
p.sommet = taille_pile(p);
return p.contenu[p.sommet];
}
int taille_pile(pile p)
{
int i = 0;
while (p.contenu[i] != 0)
{
i++;
}
return i;
}
bool piles_egales(pile t, pile p)
{
int i = 0;
bool verif = true;
p.sommet = taille_pile(p);
while (verif && (i <= p.sommet))
{
if (t.contenu[i] != p.contenu[i])
{
verif = false;
}
i++;
}
return verif;
}
J'obtiens ces erreurs suivantes :
_depiler déjà défini(e) dans pile.obj
_empiler déjà défini(e) dans pile.obj
_init_pile déjà défini(e) dans pile.obj
Et ce pour toutes les fonctions du fichier .h
J'ai pas mal traîné sur les forums pour trouver une solution, mais rien en ce qui concerne du C. Le projet a été construit sans en-tête pré-compilé.
Merci pour votre aide !