Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2226 connectés 

  FORUM HardWare.fr
  Programmation
  C

  variables globales

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

variables globales

n°2311677
bonux7
Posté le 27-02-2018 à 18:19:24  profilanswer
 

 
 
Bonjour,
 
Apparemment les variables globales sont à éviter autant que possible. Alors pourquoi l'existence de telles variables si l'on doit et peut s'en passer? Y a-t'il des situations ou elles sont quand meme utiles?

mood
Publicité
Posté le 27-02-2018 à 18:19:24  profilanswer
 

n°2311678
rat de com​bat
attention rongeur méchant!
Posté le 27-02-2018 à 18:47:48  profilanswer
 

bonux7 a écrit :

Apparemment les variables globales sont à éviter autant que possible.

Il faut effectiver faire gaffe, on a vite fait de créer du code illisible et qui peut contenir des bugs difficiles à trouver.

Citation :

Alors pourquoi l'existence de telles variables si l'on doit et peut s'en passer? Y a-t'il des situations ou elles sont quand meme utiles?

Il y a bien sûr des situations, p.ex. si on a un espace mémoire auquel pleines de fonctions doivent accéder, passer toujours un pointer en paramètre peut vite devenir lourd. Ou si on travaille avec des fonctions callback pour lesquelles on ne choisit pas les arguments ou encore pour les interruptions.

n°2311684
bonux7
Posté le 27-02-2018 à 19:21:32  profilanswer
 

Merci de ta réponse. Je n'ai pas vu encore les callback et la gestion des interruptions (je suis en L1), mais déjà celà m'aide à anticiper sur la suite.

n°2311685
rat de com​bat
attention rongeur méchant!
Posté le 27-02-2018 à 19:26:00  profilanswer
 

Les interruptions c'est pour des microcontrôleurs et autres systèmes embarqués, sur un PC tu vas pas y toucher à moins d'écrire un système d'exploitation. Les callback par contre c'est assez courant.

n°2311688
bonux7
Posté le 27-02-2018 à 20:57:09  profilanswer
 

ok dac. je prend note :)

n°2313419
Ivanovitch
I ARE VERY SKILL
Posté le 31-03-2018 à 15:53:43  profilanswer
 

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 :
  1. static bool bLocGlobale = FALSE; // bLocGlobale ne sera accessible directement que dans ce fichier
  2. bool* pbGetLocGlobale(void)
  3. {
  4.   return &bLocGlobale; // retourne l'addresse de bLocGlobale
  5. }
  6. void manipulerGlobale1(void)
  7. {
  8.   bLocGlobale = ... // OK
  9. }
  10. void manipulerGlobale2(void)
  11. {
  12.   bLocGlobale = ... // OK
  13. }
 

fichier_qui_veux_manipuler_la_globale.c

Code :
  1. #include "fichier_avec_globale_locale.h"
  2. void manipulerGlobaleAutreModule(void)
  3. {
  4.   bool* pbGlobaleAutreModule = pbGetLocGlobale();
  5.   *pbGlobaleAutreModule = ... // OK
  6.   bLocGlobale = ... // donnera une erreur de compilation
  7. }


Message édité par Ivanovitch le 31-03-2018 à 15:58:42

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  variables globales

 

Sujets relatifs
[Python] [Résolu] Variables globalesVariables globales d'une dll : est-ce qu'elles sont dupliquées ?
Problème avec les variables globales, bug PHP !?Est-ce possible de créer des variables globales dans une fonction ?
[C++] Variables globales non initialisées ?[Résolu]Variables globales qui ne se réinitialise pas...
informations sur les variables globales[JS] SetInterval et variables globales
iText : page events & variables globalesvariables globales et gprs
Plus de sujets relatifs à : variables globales


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR