Hallo, ich habe mich heute fast 2h daran aufgehangen einen Fehler in meinem Programm zu finden. Das Problem war das ich einen Char Buffer überfahren habe. :-( Ich würde es nun toll finden wenn man beim erstellen eigener Unterprogramme eine kleine Prüfung einbauen könnte. Sodas mich AVR Studio warnt wenn ich mal wieder daneben liege. Mein Aufruf wäre in etwa so... fill_str(buffer, 5, '0'); nun soll er den buffer mit dem Char '0' auffüllen bis die Länge 5 erreicht ist. In der Function fill_str wäre es nun vorteilhaft das er mir eine Warnung oder Fehler ausspuckt wenn der Länegenparameter einen bestimmten Bereich verläst. Sagen wir nicht mehr als 10. Wie kann man sowas machen? Gruß Tobi...
Mit assert(). Allerdings macht assert bei Fehlern eine Ausgabe nach stderr, dafür solltest du also was dahinter haben, und danach einen abort().
Danke für die Antwort. Kannst Du mir das bitte an einem Beispiel etwas genauer erklären? Eine Fehlermeldung wenn er beim compilieren merkt das der Wert width>5 ist wäre ein guter Ansatz, dann kann ich weitere Situationen bestimmt davon ableiten. Es werden ja Fehler und Warnungen ausgegeben, kann man das beides steuern? Gruß Tobi...
> Eine Fehlermeldung wenn er beim compilieren merkt das der Wert width>5 > ist wäre ein guter Ansatz, dann kann ich weitere Situationen bestimmt > davon ableiten. Bei assert() kann man die Fehlermeldung zur Laufzeit erzeugen lassen. http://www.nongnu.org/avr-libc/user-manual/group__avr__assert.html Zur Compilezeit so was zu machen, ist IMHO nicht möglich, denn dazu müsste der Compiler eine Variable (hier width) auswerten, also das Programm laufen lassen.
Hallo, für eigene Hinweise und Fehlermeldungen gibt es die Präprozessoranweisungen
1 | #warning
|
und
1 | #error
|
Aber das sind eben nur Präprozssoranweisungen, die keinen "Einblick" in Variablen haben (wie sollten sie auch). Dafür sind eben die oben aufgeführten asserts da. Damit kannst Du zumindest dein Programm definiert beenden. MfG, Richard
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.