Frage

Ich habe gerade diese Funktion Definition in einigen Embedded-Code:

float round_float_to_4(static float inputval);

Ich kenne andere Verwendungen für statisch (globale Variablen, Funktionen und lokale Variablen), aber dies ist das erste Mal, dass ich es als Bezeichner für Funktionsparameter zu sehen. Ich gehe davon aus, dass diese Kräfte Compiler zu festen Speicherplatz für verwenden inputval statt Stack?

War es hilfreich?

Lösung

Dies ist nicht Standard. Ich würde die gleiche Sache wie Sie erraten, und ich bin nicht einer solchen Verlängerung in Compiler mit einem eingebetteten Ziel überrascht.

Andere Tipps

Das ist nicht gültig. Der einzige gültige Ort, an dem static kann i ist in einem Array bewusst bin in einem Funktionsparameter verwendet werden Dimension

float round_float_to_4(float inputval[static 4]);

Zu sagen, dass inputval wird, in allen Aufrufen dieser Funktion, zeigen Sie auf Speicher Bereitstellen von mindestens 4 Schwimmer (dies ist ein C99 Außerdem ist es nicht in C89 erscheint).

Wie pro-C-Standard,

  

Die einzigen Speicherklassen-Bezeichner, der in einem Parameter auftreten wird   Erklärung registrieren.

Viele Embedded-Geräte haben einen sehr begrenzt Stapel, ein solches Merkmal von großem Nutzen bei der Verringerung der Chancen der Stapelüberlauf sein würde, während Sie immer noch die Möglichkeit, für die Wieder Teilnehmer-Code zu geben.

Kleinere Chips haben keine Möglichkeit, Variablen auf den Stapel zu legen, so dass alle Parameter sind implizit Speicherplätze.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top