Hallo leute ich habe da ein kleines Problem. Ich habe ein altes projekt im neuen WinAVR geladen und jetzt erkennt der compiler den typ bool nicht mehr ! Was kann ich denn dagegen tun ?
ja das hab ich schon aber das find ich ist eine unsaubere lösung... ich habe einen unsigned char draus gemacht das meinst du doch ? Außerdem funktioniert s16 u08 auch nicht mehr ... aus s16 habe ich int und aus u08 unsigned char müsste ja trotzdem funktionieren oder ? kann ich die alten typen nicht wieder anlegen oder so ?
#define bool blafasel Irgendwie wird es durch irgendwas anderes ersetzt worden sein...
per #define kann man alles so anlegen, wie man will. Dabei handelt es sich ja nur um eine Textersetzung, die der Preprozessor durchführt...
Achsoo , ich dachte das bool variabeln wirklich nur 1 bit groß sind ...mhh aber das geht warscheinlich auch gar nicht denn der prozessor kann ja bestimmt im Speicher eh nur byteweise zugreifen stimmts ? und wie würdest du s16 definieren ,int ist doch 32bit ?
Wenn s16 eine signed 16-Bit-Zahl ist, dann liegst du mit int IMHO richtig. Sonst solltest du einen Blick in die WinAVR-Doku werfen. "inttype.h" oder so nennt sich die header-datei, mit der man uint8 und sowas definiert... IMHO gibt es bool beim avr-gcc gar nicht; ich kann mich aber auch irren.
16Bit signed: int16_t 16Bit unsigned: uint16_t bool gibt es in 'c' sowieso nicht. Grüße, Freakazoid
Korrektur: booleans gibt es seit C99 auch in 'c'. Allerdings: ... and several other C compilers now support most of the new features of C99. However, there has been less support from vendors such as Microsoft and Borland that are mainly focused on C++ ... Grüße, Freakazoid
Eric Weddington schreibt: Everyone should just drop using #define'd TRUE and FALSE. The C99 standard introduces a new header file: #include <stdbool.h>. You now have the type bool, with enum values of true and false. There is no need to define your own values now. You can use them as such: Code: #include <stdbool.h> //... bool foo(void) { bool success; success = true; if (success) { // do something } success = false; return (success); }
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.