Bonjour et bonne annee a tous!
Visiblement en cette nouvelle annee je me rend compte que j'ai un probleme avec les variables a partager a plusieur fichier.
Voici le probleme:
J'ai un projet avec N fichier .c, dans chaque fichier source il y a aumoins une fonction qui accede a une ressource externe (USB, Serveur X...) ce que je veux faire c'est creer 3 variables:RES_INFO RES_ACCESS et RES_ERROR. ces variables sont dans ressource.h (qui n'a pas de ressource.c) et doit etre inclut dans tout les .c. Ces deux variables serve a signaler quelle fonction a accede a quoi et quelle erreur genre
fonction getRadarInfo:
le but est de pourvoir lire savoir a tout moment qui est le dernier a avoir vais appelle a un des devices inscrit dans la liste et connaitre la nature de l'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 struct USBstr *getRadarInfo(struct *usb) { RES_ERROR=NONE; RES_INFO=DEVICE_USB ; RES_ACCESS=0xA1; //code d'identification de la fonction appellante ... ... //fait quelque chose avec l'usb if(usb->result==NULL) { RES_ERROR=ERROR_DEVICE_USB_DATA; ... } ... }
le probleme c'est que a la compilation on me parle de multiple declaration des 3 variabledonc des que le premier fichier a inclut les autres se pleignent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #ifndef __RESSOURCE_H_ #define __RESSOURCE_H_ unsigned int RES_ERROR; unsigned char RES_INFO; //maximum 256 devices unsigned int RES_ACCESS; #endif







Répondre avec citation

Non c'est une possibilité certe mais le static est plutôt là lorsque tu ne veux pas que tes variables soient vues par le linker. Ca sert souvent dans des moyens/gros projets où tu veut être sûr que ta variable globale n'interferera pas avec les variables dans d'autres .c. Tout comme lorsque tu déclares une fonction static












Partager