mot-clé statique dans le paramètre de fonction
-
20-09-2019 - |
Question
Je viens de trouver cette définition de fonction dans un code embarqué:
float round_float_to_4(static float inputval);
Je connais d'autres usages pour statiques (variables globales, les fonctions et les variables locales), mais c'est la première fois que je le vois comme spécificateur pour le paramètre de la fonction. Je suppose que ce compilateur oblige à utiliser l'emplacement fixe de mémoire pour inputval au lieu de la pile?
La solution
est non standard. Je suppose que la même chose que vous, et je ne suis pas surpris de cette extension dans les compilateurs ayant une cible embarquée.
Autres conseils
Ce n'est pas valide. Le seul endroit valable où static
peut être utilisé dans un paramètre de fonction que je suis au courant est dans une dimension de tableau
float round_float_to_4(float inputval[static 4]);
Dire que inputval
sera, dans tous les appels à cette fonction, pointez sur la mémoire fournit des flotteurs au moins de 4
(ce qui est une addition de C99, il ne semble pas dans C89).
Selon la norme de C,
La seule spécificateur de classe de stockage qui doit se produire dans un paramètre déclaration est de vous inscrire.
De nombreux périphériques embarqués ont une pile sérieusement limitée, une telle caractéristique serait d'une grande utilité pour réduire les risques de débordement de la pile, tout en vous donnant la possibilité de re le code entrant.
Les petites puces n'ont pas la possibilité de mettre des variables sur la pile, de sorte que tous les paramètres sont implicitement des emplacements de mémoire.