95 votes

Quand utiliser un mot-clé statique avant les variables globales ?

Quelqu'un peut-il expliquer quand vous êtes censé utiliser le mot-clé statique avant les variables globales ou les constantes définies dans les fichiers d'en-tête ?

Par exemple, disons que j'ai un fichier d'en-tête avec la ligne :

const float kGameSpriteWidth = 12.0f;

Doit-il avoir static devant const ou non ? Quelles sont les meilleures pratiques pour utiliser static ?

62voto

Dirk Eddelbuettel Points 134700

static rend la variable locale au fichier ce qui est généralement une bonne chose, voir par exemple cette entrée Wikipédia.

28voto

DigitalRoss Points 80400

Oui, utiliser statique

Utilisez toujours statique dans les fichiers .c sauf si vous avez besoin de référencer l'objet à partir d'un autre module .c.

N'utilisez jamais statique dans les fichiers .h, car vous allez créer un objet différent à chaque fois qu'il est inclus.

9voto

Christoph Points 64389

Règle générale pour les fichiers d'en-tête :

  • déclarer la variable comme extern int foo; et mettre une initialisation correspondante dans un seul fichier source pour obtenir une valeur modifiable partagée entre les unités de traduction
  • utilisez static const int foo = 42; pour obtenir une constante qui peut être incrustée

7voto

p.j Points 307

Le mot-clé statique est utilisé en C pour limiter la visibilité d'une fonction ou d'une variable à son unité de traduction. L'unité de traduction est l'entrée ultime d'un compilateur C à partir duquel un fichier objet est généré.

Vérifiez ceci : Lien | Unité de traduction

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X