schon wieder lese ich hier was über int und 16 bit und "einfach davon ausgehen".... tstststs...Ein typisches Problem für die Portierbarkeit:
Ich gehe mal davon aus, dass char 8-Bit und int 16-Bit haben.Code:typedef struct { unsigned char c unsigned int i; } s_foo;
das geht hier mit Sicherheit schnell schief!
auf dem Raspi hat int 32 bits , also int == int32_t
will man exakt 16 bit int, muss man short verwenden - oder eben int16_t.
auch word hat hier übrigens 32 bits.
und char ist auf ARM-Plattformen häufig unsigned char, während es auf AVR Plattformen häufig signed char ist!
Auch auf dem Arduino Due (ARM Cortex M3) gilt das automatisch !!
und werden aus einem FILE * stream (Datei als SD-File oder von stdin) Zeichen gelesen, sind es signed int, keine unsigned int, denn es gibt hier auch negative Werte, während der erweiterte ASCII-Zeichensatz (0...255) unsigned char ist !!
Mein Tipp:
vergesst doch einfach mal die alten Datentypen.
per gpp und Arduino sind die C11-Datentypen bereits implementiert,
bei gpp für Raspi muss man bei Raspbian per Hand includen:
#include <stdint.h>
dann weiss man, was man hat.
ps,
für Buchstaben gibt es bei Raspi C++ auch den Datentyp
wchar_t
mit 8-16 bit, der alle "chars" aufnimmt, seien es uint8_t oder int16_t.
s.a. http://www.raspberry-projects.com/pi...mory/variablesDatentyp wchar_t
Der Datentyp char ist nicht in der Lage, die Zeichensätze aller nationaler Sprachen zu repräsentieren. Um zum Beispiel auch mit dem japanischen Zeichensatz umgehen zu können, ist dieser Datentyp "zu klein".
Die Darstellung beliebiger landesspezifischer Zeichensatze kann mit Hilfe des Datentyps wchar_t (wide characters) vorgenommen werden, der mit ANSI-C eingeführt wurde.
Die Definition des Datentyps erfolgt in der Header-Datei stddef.h.
wchar_t ist ebenso wie char, int, ... ein integraler Datentyp.
Literale vom Typ wchar_t besitzen folgende Gestalt
L'..'
http://www2.informatik.uni-halle.de/...c/c_wchar.html
Lesezeichen