3 votes

Déclaration de fonction statique à l'intérieur d'un bloc

A tutoriel dit

Vous ne pouvez pas déclarer les fonctions d'un bloc comme étant statiques.

Quelle en est la raison ? Comment cela affecte-t-il la fonction ?

5voto

Pavan Manjunath Points 10853

static lorsqu'il est appliqué à des fonctions, signifie que la fonction a lien interne . c'est-à-dire qu'il n'est accessible qu'à l'intérieur de ce fichier. En d'autres termes, il a champ d'application du fichier . Ce lien s'applique indépendamment du fait que vous déclariez une fonction à l'intérieur d'une autre fonction ou à l'extérieur de toutes ces fonctions.

Maintenant, si vous appliquez le static à une fonction déclaration à l'intérieur d'un autre bloc/fonction, d'un point de vue sémantique vous essayez de restreindre la portée de la fonction à ce bloc/fonction particulier, ce qui va à l'encontre des règles de la langue qui stipulent que static indépendamment de leur lieu de déclaration, ont la portée d'un fichier.

Et donc, la norme pourrait ne soit pas en mesure d'interdire une telle déclaration.

PS : Note de bas de page 30 en 6.2.3 Dans la dernière norme C11, on peut lire

Une déclaration de fonction peut contenir le spécificateur de classe de stockage statique uniquement s'il se trouve dans un fichier ;

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