Moin. MSPGCC, C-Code? Wie caste ich den Quotient aus zwei Chars zurück in ein Char? Weitere Frage: Darf ich für Int-Werte 0..255 den Typ Char benutzen oder muß ich mit der Option -8int compilieren?
Mahlzeit Christian, du kannst beliebige Werte casten, indem du sie in Klammern setzt und die Klammer castest: (char)( 100 / 50 ) Es mußt stets beachtet werden, wie der Compiler die verwendeten Typen betrachtet. int ist nicht gleich int, mancher Compiler will 16Bit mancher 32Bit dafür verwenden! Über die Typdefinitionen unbedingt vor Benutzung informieren. Manche Compiler sehen den Typ char standardmäßig als unsigned, manche als signed an. Wenn du einen int hast, dessen Wertebereich stets von 0..255 reicht, so kannst du ihn einfach in einen unsigned char casten: int i = 50; unsigned char uc = 0; uc = (unsigned char)i; Option -8int ist also unnötig. Grüße, Claus
Es waere schoen, wenn man MSPGCC bzw AVRGCC eine stdint.h verpassen wuerde. Die in ANSI C99 definierten Typen sind sehr praktisch und explizit. - Ich arbeite in meinen ia32/ia64/... (keine mikrocontroller - da noch nicht verfuegbar) Programmen nur noch mit diesen Typen, da sie die Portabilitaet extrem steigern. z.B.: uint8_t := 8 bit unsigned integer int64_t := 64 bit signed integer ... Es sollte wohl keinen grossen Aufwand darstellen dieses Headerfile fuer MSPGCC/AVRGCC zu erstellen. Hat jemand eine Idee wie man dieses Headerfile moeglichst portabel gestalten koennte? Am besten waere es natuerlich, wenn man an dem Ur-Header garnichts aendern muesste sondern lediglich ein bits/ file aendern muesste. Ich habe die Include-reihenfolge mal grob verfolgt, blicke da jedoch noch nicht ganz durch.
@Michael: für AVRGCC gibts die Includedatei (heißt inttypes.h). MSPGCC weiß ich nicht. Berndt
Nein, bei MSPGCC ist soetwas nicht dabei. Desweiteren dienen die dateien inttypes.h und stdint.h zwei unterschiedlichen zwecken: inttypes.h: ISO C99: 7.8 Format conversion of integer types <inttypes.h> stdint.h: ISO C99: 7.18 Integer types <stdint.h> inttypes.h includiert stdint.h, jedoch nicht anderstherum. Die Integer typen mit expliziter groessenangabe sind in stdint.h definiert.
Interresant - ich habe eben <sys/inttypes.h> entdeckt mit einer ganzen Menge typedefs: typedef signed char int8_t; typedef unsigned char uint8_t; typedef int int16_t; typedef unsigned int uint16_t; typedef long int32_t; typedef unsigned long uint32_t; typedef long long int64_t; typedef unsigned long long uint64_t; typedef int16_t intptr_t; typedef uint16_t uintptr_t; Wunderbar, da gibt es ja keinen Grund mehr stdint.h zu vermissen. Ich finde es dennoch seltsam, dass der MSPGCC nicht dieses Ansi C99 File mitbringt.
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.