mikrocontroller.net

Forum: Compiler & IDEs error: expected identifier or '(' before '=' token


Autor: Werner Dornstädter (dorni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer kann mir hier weiterhelfen?
bei folgend aufgeführtem Kode erhalte ich die Fehlermeldung:

../Entprellen-embedded.c:19: error: expected identifier or '(' before
'=' token

Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdbool.h>

#define forever true 
#define OFF false 
#define ON true 

typedef int time_t;
typedef bool ioSwitch;


 //------------------------------------------------------------------------- 
 // Get Debounced Switch State
 bool IsSwitchStateChanged (void) 
 //------------------------------------------------------------------------- 
 { 
   static bool oldState = OFF; 
   ioSwitch = IO_SWITCH;      // grab Value from I/O 
 
   If (ioSwitch != oldState)  // if ioSwitch state has changed, do something 
      {  
    DebounceSwitch (); 
       oldState = ioSwitch;   // save state for next comparison 
       return true;           // ioSwitch state HAS changed
   }   
  return false;              // ioSwitch state HAS NOT changed
 }

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werner Dornstädter wrote:
> typedef bool ioSwitch;

Deklariert einen neuen Variablentyp namens ioSwitch

>    ioSwitch = IO_SWITCH;      // grab Value from I/O

Hier soll eine Variable definiert werden. Aber hier fehlt der 
Variablenname zwischen dem Variablentyp ioSwitch und dem =

Insgesamt würde deine Source laufen, wenn du das betreffende typedef 
weglässt und die Zuweisung so schreibst:

bool ioSwitch = IO_SWITCH;      // grab Value from I/O

Autor: Gabriel Wegscheider (gagosoft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm das wollte ich auch Antworten, dann war der Thread weg?!?

Autor: Werner Dornstädter (dorni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Stefan für Deine Rückmeldung,
aber der Code will irgendwie nicht oder es besteht nun ein 
Mißverständnis.

Fehlermeldungen:

../Entprellen-embedded.c:17: error: 'IO_SWITCH' undeclared (first use in 
this function)
../Entprellen-embedded.c:17: error: (Each undeclared identifier is 
reported only once
../Entprellen-embedded.c:17: error: for each function it appears in.)
../Entprellen-embedded.c:19: warning: implicit declaration of function 
'If'
../Entprellen-embedded.c:20: error: expected ';' before '{' token

Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdbool.h>

#define forever true 
#define OFF false 
#define ON true 

typedef int time_t;

//------------------------------------------------------------------------- 
// Get Debounced Switch State
bool IsSwitchStateChanged (void) 
//------------------------------------------------------------------------- 
{ 
   static bool oldState = OFF; 
   bool ioSwitch = IO_SWITCH;      // grab Value from I/O 

   If (ioSwitch != oldState)  // if ioSwitch state has changed, do something 
      {  
    DebounceSwitch (); 
       oldState = ioSwitch;   // save state for next comparison 
       return true;           // ioSwitch state HAS changed
   }   
  return false;              // ioSwitch state HAS NOT changed
}

Autor: Hermann-Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tippfehler ?
  if (ioSwitch != oldState)  // if ioSwitch state has changed, do something 

Also 'if' und nicht 'If', darauf deutet die Fehlermeldung hin.

Gruß
Hermann-Josef

Autor: Werner Dornstädter (dorni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank, Ihr habt mir weitergeholfen.
Und für den es interessiert, hier nun der aktuelle und bisher 
Fehlerfreie Code.
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdbool.h>

#define forever true 
#define OFF false 
#define ON true 
bool ioSwitch;

// for compilation
   bool IO_SWITCH = true;
   #define interrupt

//typedef int time_t;

//------------------------------------------------------------------------- 
void microcontrollerTask (void) 
//------------------------------------------------------------------------- 
{ 
  // do something 
  // this task takes (2 mS) to execute 
} 


//------------------------------------------------------------------------- 
void DebounceSwitch (void) 
//------------------------------------------------------------------------- 
{ 
  // do the Jack Ganssle software debounce 
} 

//------------------------------------------------------------------------- 
// Get Debounced Switch State
bool IsSwitchStateChanged (void) 
//------------------------------------------------------------------------- 
{ 
   static bool oldState = OFF; 
   ioSwitch = IO_SWITCH;      // grab Value from I/O 

   if (ioSwitch != oldState)  // if ioSwitch state has changed, do something 
      {  
    DebounceSwitch (); 
       oldState = ioSwitch;   // save state for next comparison 
       return true;           // ioSwitch state HAS changed
   }   
  return false;              // ioSwitch state HAS NOT changed
} 

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.