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.