C est les variables globales.

smog

Membre actif
17 Août 2005
717
93
50
Bonjour à tous,

Je travaille le C, et dans le bouquin que j'utilise l'auteur stipule que "en C, il faut éviter au maximum d'utiliser des variables globales"...
Quelqu'un peut m'éclairer là-dessus ? Il n'y a pas d'explication qui suit, et ça me chagrine un peu... Peut-être aurai-je des infos plus tard dans un autre chapitre mais vous pourrez sûrement m'en dire plus dès maintenant...

Merci !!:zen:

Je n'arrive pas à éditer le titre pour corriger le "est" en "et"...
 
Dernière édition:
"L'utilisation de ces variables rend plus difficile la compréhension d'un programme ainsi que son débuggage et sa modification ultérieure.

Lors de la recherche d'erreurs de programmation, lorsqu'une variable globale contient une information erronée, il est plus difficile de trouver la source de l'erreur, car la variable a pu être modifiée dans n'importe quelle partie du programme.

Lors des modifications apportées à un programme, il est complexe de modifier le traitement d'une variable globale parce qu'il faut comprendre tout le programme pour savoir comment la variable était traitée dans le programme originel, étant donné que la variable peut être modifiée depuis n'importe quelle fonction. De plus, elles sont un vecteur de fuite de mémoire.

Lors de l'écriture de bibliothèques logicielles, les variables globales empêchent la réentrance si elles sont mal utilisées. C'est pourquoi il est recommandé de ne pas les utiliser pour l'écriture de bibliothèques."

Source : Wikipédia
 
Enfin, basiquement qu'est ce qu'une variable globale en C?
Une variable déclarée dans le main? (ou alors un constante pour le préprocesseur?)

Dans ce cas elle ne sera modifiée dans une sous-fonction que si on y accède par son adresse (pointeur).

Du coup, smog, ta recommandation ressemble plus à une banalité (cf. le passage de Wikipedia) qu'à quelque chose de spécifique au C.

En C, les variables "globales" sont des pointeurs que l'on passe (volontairement) en paramètre à des fonctions. Elles ne seront pas modifiées (sauf si on y affecte quelque chose dans ce cadre) autrement (à moins d'effectuer une modification à une mauvaise adresse et ça, que le variable soit "globale" ou non, ça ne change rien).

C'est quoi comme bouquin?
 
Merci pour vos réponses.
Je pensais tout bêtement à une variable de type "score" dans un jeu ou "couleur de trait choisi au départ" dans un logiciel de tracé de courbe.
Bref, des données que l'on utilise dans n'importe quel sous-programme.

Mais bon, je suis resté au Turbo Pascal et au Python (et Visual Basic) pour lesquels je ne m'étais jamais posé la question, et dont les bouquins/tutos que j'ai utilisés n'avaient jamais parlé.

Le bouquin en question est celui de M.NEBRA, issu de la série "les livres du Zéro", intitulé "Apprendre à programmer en C"

100628103428945836.jpg
 
Dans n'importe quel langage, on évite autant que faire se peut d'avoir des variables globales.
C'est davantage un principe de conception (encapsulation) qu'une pratique liée à un langage.