PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum uint16_t statt unsigned int?



ricola
05.07.2007, 13:18
Hallo,

in den Artikeln des RN-Wissen-Bereichs werden ja verschiedene
Beispielimplementierungen für ATMEL Controller mit avr-gcc gegeben.
Ich frage mich nun, wo der Unterschied zwischen der Benutzung der
diversen Datentypen besteht. Wo ist denn der Vorteil/Nachteil zwischen:

uint16_t bzw. unsigned int
uint8_t bzw. unsigned char
.
.
.


Oder ist das vollkommen egal, welche Deklaration ich benutze?


Danke für Aufklärung

Gruß
RICOLA

Hubert.G
05.07.2007, 13:47
char ist 8bit und int ist 16bit. Das sagt doch wohl alles aus bei einem 8bit-Kontroller.

Hubert

ricola
05.07.2007, 13:49
?
das ist ja klar, siehe oben, aber ich verstehe nicht, warum manche
das schlüsselwort "unsinged int" nehmen und manche das schlüsselwort
"uint16_t". Gibt es da einen Unterschied? Also macht der Compiler damit
etwas anderes?

Gruß
RICOLA

CsT
05.07.2007, 14:14
Nein, die beiden sind genau das selbe.

Hubert.G
05.07.2007, 14:36
Da hab ich wohl schlecht gelesen. Die Standarddefinitionen stehen in der stdint.h.
Es gibt jede Menge Bezeichnungen für den gleichen Typ, du musst sie nur definieren oder die entsprechende Datei includen.

Hubert

uwegw
05.07.2007, 14:46
C hat die Schwäche, dass die Größe der Datentypen nicht verbindlich festgelegt ist. Ein unsigned int kann je nach Controller/CPU unterschiedlich groß sein. Auf enm PC mit 32-Bit CPU sind es zb 32 Bit. Um diese Schwäche auszubügeln und portierbaren Code zu haben, definiert avr-gcc diese Datentypen mit festgelegter Länge.

ricola
05.07.2007, 18:38
ok, danke!

Gruß
RICOLA