enum Problem

OP #2388145
Lesenswert?

Ich hab folgendes als Teil in meinem Programm:

  enum LEDDIR { LEFT2RIGHT, RIGHT2LEFT};
  enum BOOLIAN {FALSE, TRUE};
  int Switch_Count=0;
  LEDTris = 0; //PORT D output
  SWTris = 1; // PORT B Pin 0 Input
  ADBIT = 0b0111; // PORT B Digital
  PULLUP =1;  //Pullup aus
    enum LEDDIR Dir;
    enum BOOLIAN SwitchPressed;

  Dir = LEFT2RIGHT;
  SwitchPressed = FALSE;

hab es soweit wie es geht in einzelne Schritte verpackt aber beim 
compilieren meckert der Compiler immer bei

enum LEDDIR Dir;

und ich habe keine Ahnung warum. Hab schon in meine alten C-Bücher 
reingeschaut aber finde nicht woran es liegt. (Hab eigentlich nie was 
mit enum gemacht).
#2388152
Lesenswert?

das Problem ist nicht der Enum, sondern, dass du varaiablen mitten im 
Code DEklarierst.

Bei C müssen die Deklaraionen am Anfang des Blocks stehen.

so sollte es also gehen:
1
  enum LEDDIR { LEFT2RIGHT, RIGHT2LEFT};
2
  enum BOOLIAN {FALSE, TRUE};
3
  int Switch_Count=0;
4
  enum LEDDIR Dir;
5
  enum BOOLIAN SwitchPressed;
6
  LEDTris = 0; //PORT D output
7
  SWTris = 1; // PORT B Pin 0 Input
8
  ADBIT = 0b0111; // PORT B Digital
9
  PULLUP =1;  //Pullup aus
10
 
11
  Dir = LEFT2RIGHT;
12
  SwitchPressed = FALSE;


edit:
außerdem heißt es boolEan
Persönliche Seite #2388157
Lesenswert?

Felix S. schrieb:
> aber beim
> compilieren meckert der Compiler immer bei
>
> enum LEDDIR Dir;

Die Fehlermeldung lautet "gemecker"?

Du programmierst vermutlich in C. In C können Variablendeklarationen nur 
zu Beginn eines Blocks erfolgen, nicht mittendrin.

Vor Deiner Deklaration von "Dir" aber steht Programmcode, beginnend mit 
der Zuweisung an "LEDTris".
#2388162
Lesenswert?

>so sollte es also gehen:
>
>  enum LEDDIR { LEFT2RIGHT, RIGHT2LEFT};
>  enum BOOLIAN {FALSE, TRUE};
>  int Switch_Count=0;
>  enum LEDDIR Dir;
>  enum BOOLIAN SwitchPressed;

Oder typedef benutzen:
1
  typedef enum { LEFT2RIGHT, RIGHT2LEFT} LEDDIR;
2
  typedef enum {FALSE, TRUE} BOOLEAN;
3
  int Switch_Count=0;
4
  LEDDIR Dir;
5
  BOOLEAN SwitchPressed;
Gast #2388209
Lesenswert?

> das Problem ist nicht der Enum, sondern, dass du varaiablen mitten im
> Code DEklarierst.
Der GCC toleriert das im übrigen (Gibt nicht mal ein Warning)

Als ich das erste mal mit MPLAP gearbeitet hab (C für den PIC18F4550) 
bin ich auch drauf reingefallen, hab geschlagene 30 Minuten nach dem 
Fehler gesucht....
Gast #2388453
Lesenswert?

bla schrieb:
>> das Problem ist nicht der Enum, sondern, dass du varaiablen mitten im
>> Code DEklarierst.
> Der GCC toleriert das im übrigen (Gibt nicht mal ein Warning)

Ist ja auch bereits seit über einer Dekade ganz normales C. Man kann GCC 
aber in einen Vorkriegsmodus schalten, in dem er solche Sachen auch 
anmeckert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren