Quand j'avais posé ma question, j'avais oublié d'écrire dans le .h :
#ifndef File1
#define File1
int var1=10;
int fct1(int);
#endif
avec le #ifndef, normalement je ne devrais pas avoir de soucis avec la définition multiple, si ? Parce que si je comprend bien le préprocesseur, vu qu'il a défini File1, il ne repasse pas dedans, donc ne définit pas à nouveau var1, si ?
Pourtant, il m'a quand même fallu mettre le extern pour ne pas me retrouver avec des erreurs...
avec le #ifndef, normalement je ne devrais pas avoir de soucis avec la définition multiple, si ? Parce que si je comprend bien le préprocesseur, vu qu'il a défini File1, il ne repasse pas dedans, donc ne définit pas à nouveau var1, si ?
Si, car les compilations de main.c et file1.c sont indépendantes. Entre deux compilations, tout est oublié. Ce n'est pas pour résoudre ce genre de problème que les gardes d'inclusion sont utiles.
- Edité par Marc Mongenet 11 juillet 2018 à 10:45:48
avec le #ifndef, normalement je ne devrais pas avoir de soucis avec la définition multiple, si ? Parce que si je comprend bien le préprocesseur, vu qu'il a défini File1, il ne repasse pas dedans, donc ne définit pas à nouveau var1, si ?
Si, car les compilations de main.c et file1.c sont indépendantes. Entre deux compilations, tout est oublié. Ce n'est pas pour résoudre ce genre de problème que les gardes d'inclusion sont utiles.
- Edité par Marc Mongenet il y a 8 minutes
Ah, ouais c'est vrai ça semble logique.
Merci de la précision
Utilisation variable extern
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent