un compromis est de limiter la visibilité de la globale au fichier (plus précisément l'unité de compilation) ou elle est déclarée.
C'est faisable grâce au qualificateur "static".
fichier_avec_globale_locale.c
Code :
- static bool bLocGlobale = FALSE; // bLocGlobale ne sera accessible directement que dans ce fichier
- bool* pbGetLocGlobale(void)
- {
- return &bLocGlobale; // retourne l'addresse de bLocGlobale
- }
- void manipulerGlobale1(void)
- {
- bLocGlobale = ... // OK
- }
- void manipulerGlobale2(void)
- {
- bLocGlobale = ... // OK
- }
|
fichier_qui_veux_manipuler_la_globale.c
Code :
- #include "fichier_avec_globale_locale.h"
- void manipulerGlobaleAutreModule(void)
- {
- bool* pbGlobaleAutreModule = pbGetLocGlobale();
- *pbGlobaleAutreModule = ... // OK
- bLocGlobale = ... // donnera une erreur de compilation
- }
|
Message édité par Ivanovitch le 31-03-2018 à 15:58:42