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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top