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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.