Forum: Mikrocontroller und Digitale Elektronik Fragen zur Variablendeklaration


von Christian M. (Gast)


Lesenswert?

Folgendes Problem:

Ich bin während meines Projektes auf folgendes Problem gestoßen:

Es wird eine Variable deklariert:
  static OS_STACKPTR int Stack0[512]; /* Task stacks         */

Die Deklaration der Variable ist im großen und ganzen kein Problem für 
mich. Jedoch welchen Sinn macht OS_STACKPTR

In meinem C-Code habe ich folgendes define gefunden:
  #ifndef OS_STACKPTR
    #define OS_STACKPTR
  #endif

Welchen Sinn macht die Definition von OS_STACKPTR?

Ich bin sehr gespannt auf eure Antworten.

von Grrrr (Gast)


Lesenswert?

Deine Frage läßt sich mangels weiterer Angaben nur abstrakt beantworten.

Vermutlich ist das fragliche OS für verschiedene Prozessoren und 
Compiler portiert worden oder das ist zumindest vom Entwickler so 
vorgesehen. In einer anderen Kombination ist der Wert dann unter 
Umständen nicht leer.

von Karl H. (kbuchegg)


Lesenswert?

Durch das #define wird OS_STACKPTR zu einem Leerstring.

Nach dem Präprozessorlauf steht da also

static int Stack0[512];

eine ganz normale Definition.

<Ratemodus ein>
Das ganze dürfte aus einem Pakte stammen, welches für verschiedene CPU's 
und oder Betriebssysteme angeboten wird. Wenn du also genau wissen 
willst, was es mit dem OS_STACKPTR auf sich hat, musst du dir eine 
Variante deines Codes besorgen, in dem dieses Makro nicht in einen 
Leerstring exapandiert. Eventuell gibt es ja in einem Header File auch 
noch ein anderes #define dafür, welches wieder über einen #ifdef von der 
aktuellen Konfiguration des Pakets abhängt.

Erst dann, wenn du da fündig wirst, kann man weitere Recherche 
betreiben, warum und wieso es da eine Spezialität gibt bzw. was damit 
bezweckt wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.