La déclaration statique à ce niveau du code signifie que la variable n'est visible que dans l'unité de compilation actuelle. Cela signifie que seul le code de ce module verra cette variable.
si vous avez un fichier d'en-tête qui déclare une variable statique et que cet en-tête est inclus dans plusieurs fichiers C/CPP, alors cette variable sera "locale" à ces modules. Il y aura N copies de cette variable pour les N endroits où cet en-tête est inclus. Elles ne sont pas du tout liées les unes aux autres. Tout code contenu dans l'un de ces fichiers source ne fera référence qu'à la variable déclarée dans ce module.
Dans ce cas particulier, le mot clé "static" ne semble pas apporter d'avantage. Il se peut que quelque chose m'échappe, mais il semble que cela n'ait pas d'importance - je n'ai jamais rien vu de tel auparavant.
Quant à l'inlining, dans ce cas la variable est probablement inliné, mais c'est seulement parce qu'elle est déclarée const. Le compilateur pourrait sera plus enclin à mettre en ligne les variables statiques des modules, mais cela dépend de la situation et du code compilé. Il n'y a aucune garantie que le compilateur mettra en ligne les "statics".
0 votes
Liés : stackoverflow.com/questions/177437/