Forum: Compiler & IDEs Bool problem


von Gizmo (Gast)


Lesenswert?

#include <avr/io.h>

int main(void)
{
  unsigned char x;
  bool conversion;

  ADCSR =0b10100110;  // ADSCR initialisieren
  conversion =1;

  if(conversion==1)
  {
    ADCSR =0b11100110;  // Konvertierung starten
    if(bit_is_set(ADCSR,6))
    {
      x = ADCL;      // ADCL auslesen
    x += (ADCH<<8);
    }
      else
    {
      sbi(ADCSR,6);
    }
  }
  /* Endlosschleife */
  for (;;);

  return 0;
}

in welcher header datei ist der datentyp bool definiert?

wenn ich versuche diesen code zu compilieren sagte der Compiler:

ADfunktion.c:9: error: `conversion' undeclared (first use in this
function)

wo lieget hier der Fehler?
ich habe conversion als bool deklariert und mit 1 initialisiert müsste
doch eigentlich so funktionieren.

von Rufus T. Firefly (Gast)


Lesenswert?

Dein Sourcefile ist kein C++-Sourcefile, sondern ein C-Sourcefile. Den
Datentyp "bool" gibt es in C nicht.
In C++ ist das ein Datentyp wie int oder double und daher auch nicht in
einer Headerdatei definiert.

Also:
Entweder Sourcefile umbenennen (adfunktion.cpp) oder auf "bool"
verzichten.

von Jörg Wunsch (Gast)


Lesenswert?

Sorry, das stimmt so nicht (mehr).

In C99 gibt es auch vordefinierte Typen für bool sowie Werte für
false und true, man muss nur #include <stdbool.h> reinziehen.

von Gizmo (Gast)


Lesenswert?

Der Compiler sagt noch:

ADfunktion.c:9: error: `ADCSR' undeclared (first use in this
function)

wieso kennt er ADCSR nicht das Register gibts doch, was isn da los ?
 ansonsten das mit dem bool funzt jetzt danke

von Gizmo (Gast)


Lesenswert?

ich hab den Fehler gefunden ich hab ADCSR anstatt ADCSRA geschrieben

von Alex (Gast)


Lesenswert?

Tja, immer das Headerfile zur Hand haben, das ist bei solchen Problemen
erste Anlaufstelle.

von Rufus T. Firefly (Gast)


Lesenswert?

@Jörg:
C99-Compiler sind aber noch sehr rar.

von Jörg Wunsch (Gast)


Lesenswert?

> C99-Compiler sind aber noch sehr rar.

Da wir hier in einem GCC-Forum sind, nicht so sehr. ;-)

Zumindest nicht in dieser Hinsicht.  Einige obskurere Features von
C99 sind allerdings noch nicht supportet.

Ansonsten habe ich derzeit gelegentlich dienstlich den IAR für AVR
in der Hand, der ist in Punkto C99 wohl ähnlich weit (auch wenn man
da schon mal an die Grenzen der Implementierungsbugs stoßen kann...).

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.