AVR Inline Optimierung kaputt?

#6347386
Lesenswert?

mh schrieb:
> Philipp Klaus K. schrieb:
>> Kein falsches Ergebnis, da der C-Standard explizit sagt, dass das
>> Verhalten undefiniert ist, wenn ein Wert übergeben wird, der weder EOF
>> ist, noch in einen unsigned char passt.
>
> Bleibt noch die Frage nach dem Wert von EOF ;-)

Der muss natürlich geeignet gewählt sein (z.B. -1). Damit niemand 
unabsichtlich den Wert von EOF ändert, ohne an islower() zu denken, hat 
SDCC noch ein
1
#ifdef EOF
2
_Static_assert(!((unsigned char)EOF >= 'a' && (unsigned char)EOF <= 'z'), "EOF out of range - ");
3
#endif

in ctype.h.
Moderator Persönliche Seite #6347400
Lesenswert?

Jörg W. schrieb:
> Philipp Klaus K. schrieb:
>> Kein falsches Ergebnis, da der C-Standard explizit sagt, dass das
>> Verhalten undefiniert ist, wenn ein Wert übergeben wird, der weder EOF
>> ist, noch in einen unsigned char passt.
>
> Na gut. :)

In diesem Falle würde übrigens ich, wenn ich das genau so 
implementiere, diese beiden Details (unsigned Vergleich benutzt, weil er 
üblicherweise schneller ist, Übergabe eines Zeichens, das nicht EOF ist 
und nicht in unsigned char passt, triggert UB) als Kommentar im 
Quelltext hinterlassen, denn das ist alles andere als offensichtlich.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren