Bonjour,
Je rencontre quelques petits problèmes avec mes variable globales.

main.obj : error LNK2005 : struct personne Pers already defined in personne.h

main.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
  #include <stdio.h>
 #include <stdlib.h>
 #include main.h
 #include personne.h
void main()
{
    ...
}
personne.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 #include <stdio.h>
 #include <stdlib.h>
 #include personne.h
 
 ...
personne.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
struct personne{
  char nom[30];
  int age;
};
 
personne Pers;
Pour remedier a cette erreur j'ai essayé plusieurs solutions
- #ifndef _PERSONNE_H_
#define _PERSONNE_H_
#endif

- #pragma once

- extern dans les .c

Même sans code dans mes fichiers .c aucune de ces solutions a marchées.

La seul solution que j'ai trouvée c'est de déclaré "personne Pers" dans le personne.c, et de le mettre en extern dans les autres fichiers, solution que je ne trouve pas très "correcte".

J'ai esssayé de modifier les options du projet, mais cela n'a rien changé.
J'ai l'impression que le preprocesseur ne prend pas en compte certaine instruction qui permette de ne pas passer deux fois dans un .h et je ne comprend pas pourquoi.

Merci de votre aide.