Switch Case: Konstanten verwenden möglich?

Gast #1043338
Lesenswert?

Hallo,
ich habe eine Switch Case Anweisung in meinem Programm wobei es für 
jeden Möglichen Wert eine globale Konstante (uint8_t) gibt. Verwende ich 
aber bei den Cases die Konstantennamen, dann meckert der Compiler: 
"error: case label does not reduce to an integer constant"

Muss ich jetzt direkt 0, 1, 2 etc. benutzen oder gibt es eine 
Möglichkeit die Konstanten doch zu verwenden?

zur Verdeutlichung meines Problems:
1
const uint8_t rot = 0;
2
const uint8_t blau = 1;
3
...
4
...
5
int main(void){
6
...
7
   switch (Farbe){
8
      case rot:{
9
      ...
10
      break;
11
      }
12
      case blau:{
13
      ...
14
      break;
15
      }
16
   }
17
}
Gast #1043360
Lesenswert?

In C sind mit const qualifizierte Variablen zwar write-only, aber
keine Konstanten. In C++ ist das anders, da würde der Code
funktionieren.

In C macht man das entweder wie Matthias mit Defines
1
#define ROT  0
2
#define BLAU 1

oder mit Enums
1
enum Farbe { ROT, BLAU };

In beiden Fällen sind ROT und BLAU aus Compilersicht Konstanten mit den
Werten 0 und 1.

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