assert.h auf AVR

Gast #1414199
Hallo,
wenn man erst mal weiß, wonach man sucht, geht es doch deutlich 
einfacher ...
Ich wollte mir einige Hilfsfunktionen schreiben, um Fehler zur Laufzeit 
zu bearbeiten (z.B. beim CAN-Controller MCP2515 einem change-mode 
befehlen, artig alle laufenden messages abwarten und dann das 
Statusregister zurücklesen, ob der Mode auch tatsächlich ausgeführt 
wird). Bei µC's kann man nach meinem bisherigen Wissen ja nicht so viel 
machen (da kein STDERR etc.), und immer gleich einen Reset hilft auch 
nicht wirklich weiter. Also dachte ich mir, schreib die Fehler quasi als 
Log auf eine SD-Karte.
Dann fand ich assert() als scheinbar supergeniale Möglichkeit, 
Sourcefilenamen und Funktionsnamen als Variable zu haben (#error und 
#warning für den Preprozessor als weitere super Testmethode fielen bei 
der Suche gleich mit ab). Nur schweigt sich die libc da aber etwas aus 
bzw. ich habe es wohl doch noch nicht ganz verstanden, wie man das auf 
einem µC anwendet.
Hat jemand mal einen Link auf irgendeinen Beispielcode, wo die 
Verwendung klar wird?
Lutz schrieb:
> @ Stefan:
> Wenn Du das hier meinst, find ich es "sehr überschaubar".

Und? Es steht eigentlich alles drin, was man wissen muss. Daher nochmal 
die Frage: was genau vermisst du dort?

> Ich verstehe das so, daß wenn man __ASSERT_USE_STDERR nicht definiert,
> einfach nur abort() aufgerufen wird.

Ja.

> (was vermutlich zu einem Reset führt?).

Nein. Aber auch die abort-Funktion ist dokumentiert.
Gast
Hmh ...
Da scheint mir dann doch eher etwas ANSI-C(-Mangel) das Problem zu sein. 
Die Links helfen mir da auf jeden Fall weiter, Danke. Wie gesagt: Wenn 
man erst mal weiß, wonach man sucht, geht's deutlich leichter.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.