Forum: Mikrocontroller und Digitale Elektronik typ bool im Winavr


von Andreas (Gast)


Lesenswert?

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 ?

von Bernhard S. (bernhard)


Lesenswert?

>Was kann ich denn dagegen tun ?

einfach den Typ ändern

von Andreas (Gast)


Lesenswert?

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 ?

von Rahul (Gast)


Lesenswert?

#define bool blafasel
Irgendwie wird es durch irgendwas anderes ersetzt worden sein...

von Rahul (Gast)


Lesenswert?

per #define kann man alles so anlegen, wie man will. Dabei handelt es
sich ja nur um eine Textersetzung, die der Preprozessor durchführt...

von Andreas (Gast)


Lesenswert?

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 ?

von Rahul (Gast)


Lesenswert?

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.

von André K. (freakazoid)


Lesenswert?

16Bit signed: int16_t
16Bit unsigned: uint16_t

bool gibt es in 'c' sowieso nicht.

Grüße, Freakazoid

von André K. (freakazoid)


Lesenswert?

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

von Stephan (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.