Hallo pl,
Wenn ich meinen Quellcode in ISO-8859-1 speichere
Logisch, dann kriegst Du eine andere Bytesequenz!
Ich zitiere dich aus dem Posting direkt davor:
Wenn Du bei der Bytesemantic bleibst, spielt die Zeichenkodierung überhaupt keine Rolle.
Diese Aussage ist offensichtlich falsch.
char e = "€"; // Quelldatei UTF-8 kodiertwas schon der Kompiler nicht durchgehen lässt. Siehe Artikel
Ja, aber die Begründung ist falsch. char c = "a" wird auch vom Compiler bemängelt. Der Grund ist nicht, dass "€" bei UTF-8-Kodierung mehrere Bytes benötigt, sondern dass Doublequotes einen Pointer auf einen C-String erzeugen. Was du meinst ist char e = '€' - hier ist deine Begründung richtig.
Und nochwas: uint8_t *binary - don't do that. C gibt dir nur diese eine Garantie: signed char ≤ short int ≤ int ≤ long int ≤ long long int. Es ist nicht garantiert, dass uint8_t == unsigned char. Praktisch ist es heutzutage überall der Fall, aber es muss nicht so sein. Die Datentypen existieren aus einem Grund. Wenn du char meinst, benutze auch char.
LG,
CK