Commande préproc et inclusion

Commande préproc et inclusion - C - Programmation

Marsh Posté le 12-07-2005 à 18:17:34    

Petite question concernant des déclarations de variables:
 
je désire utiliser pour plusieurs fichiers c, un meme fichier de déclaration h, contenant les déclarations de ressources communes, j'écris donc dans mon fichier h
 
#ifndef INCLUSION
#define INCLUSION
 
int a;
...
 
#else
 
extern int a;
...
 
#endif
 
Je m'attends donc à obtenir la déclaration classique lors de la première inclusion, et des déclarations en extern pour les suivantes.
Il semblerait que ceci ne fct pas puisque j'obtiens une erreur au link sur de multiples déclarations de ma variable a. Il semble donc que mon #define INCLUSION n'est pas pris en compte.
Qu'en pensez vous ?

Reply

Marsh Posté le 12-07-2005 à 18:17:34   

Reply

Marsh Posté le 12-07-2005 à 18:20:59    

on ne fait pas comme ca :)
 
on laisse toujours la déclaration dans le .h :

Code :
  1. extern int a;


 
et l'initialisation dans le fichier .c :
 

Code :
  1. int a;

Reply

Marsh Posté le 12-07-2005 à 19:02:07    

pgaranx a écrit :

je désire utiliser pour plusieurs fichiers c, un meme fichier de déclaration h, contenant les déclarations de ressources communes, j'écris donc dans mon fichier h


#ifndef INCLUSION
#define INCLUSION
 
int a;
...
 
#else
 
extern int a;
...
 
#endif



Marche pas. Les headers doivent contenir la déclaration, et un seul.c doit contenir la définition.
 
http://mapage.noos.fr/emdel/notes.htm#definitions

Citation :

Qu'en pensez vous ?


Que tu n'as pas compris à quoi servait les protections contre les inclusions multiples.
 
Un peu de lecture :  
 
http://mapage.noos.fr/emdel/codage.htm


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed