const struct case

#3918463
Lesenswert?

ch schrieb:
> Wie kann man eine Struktur als Konstante in "case" verwenden?

So wie du dir das vorstellst: gar nicht

Auch wenn man die Dinger als 'Konstante' bezeichnet, betrachtet sie die 
Sprache und damit der Compiler als Variablen, die so vereinbart sind, 
dass man per Programm ihren Wert nicht ändern darf.

Das reicht aber nicht für einen case. Da muss tatsächlich eine 
Compile-Time Konstante stehen.

-> auf ein if ausweichen
Gast #3918531
Lesenswert?

> -> auf ein if ausweichen

vielen Dank.

Ich hatte schon überlegt, statt der "struct" zwei "defines" zu 
verwenden.
1
#define BB_a 1
2
#define BB_b 2

aber ich will auch die Struktur als einzelner Parameter einer Funktion 
übergeben können.

Am Ende sind die "if's" wohl am besten.
Gast #3919508
Lesenswert?

>ist wahrscheinlich eine blöde Frage, aber wozu ist die Abfrage überhaupt
>gut, wenn das Argument eh konstant ist?

Vielleicht war der Code auch etwas missverständlich, weil ich die 
switch-Anweisung weggelassen habe
1
typedef struct
2
{
3
  uint8_t a;
4
  uint8_t b; 
5
} reg_t;
6

7
const reg_t BB={1,2};
8
const reg_t CC={2,2};
9

10

11
void test(uint8_t val)
12
{
13
 switch(val)
14
   case BB.a:
15
   {
16
    ...
17

18
   case CC.a:
19
   {
20
   ....
Gast #3920597
Lesenswert?

ch schrieb:
>>ist wahrscheinlich eine blöde Frage, aber wozu ist die Abfrage überhaupt
>>gut, wenn das Argument eh konstant ist?
>
> Vielleicht war der Code auch etwas missverständlich, weil ich die
> switch-Anweisung weggelassen habe

Ach so, jetzt hab ich's auch kapiert. Danke

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