En C, le mot-clé statique au sein d'une unité de traduction détermine la visibilité des symboles. Cependant, dans n3092, son utilisation pour les objets dans la portée de l'espace de noms était obsolète, et dans n3225, la dépréciation a été supprimée.
Curieusement, la documentation sur ce changement est limitée. Cet article examine les raisons qui sous-tendent ce phénomène.
Dans la révision 94 des rapports sur les défauts et les problèmes acceptés du langage de base standard C, sous 1012. Undeprecating Static, il indique :
Although 7.3.1.1 [namespace.unnamed] states that the use of the static keyword for declaring variables in namespace scope is deprecated because the unnamed namespace provides a superior alternative, it is unlikely that the feature will be removed at any point in the foreseeable future.
Essentiellement, la dépréciation de la statique était déplacée. Il fournit un moyen pratique de déclarer des fonctions ou des objets avec une liaison interne sans nécessiter le code passe-partout d'espaces de noms sans nom.
Une préoccupation était la compatibilité avec C. Cependant, la compilation des programmes C en C peut être difficile, donc ce facteur n'a peut-être pas joué un rôle significatif.
La suppression du mot-clé statique la dépréciation reflète la reconnaissance du fait qu'elle reste une fonctionnalité précieuse dans C . Alors que les espaces de noms sans nom offrent une alternative, static fournit une solution concise et directe pour déclarer des objets ou des fonctions avec un lien interne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!