mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fragen zur Variablendeklaration


Autor: Christian M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.