Problem mit struct und Pointer

OP #4636038
Lesenswert?

Hallo,

Es geht um die WS2812 light Bibliothek.
Die Funktion
1
void ws2812_setleds     (struct cRGB  *ledarray, uint16_t number_of_leds);
 erwartet ja einen Pointer auf eine Struktur vom Typ
1
struct cRGB  { uint8_t g; uint8_t r; uint8_t b; };

Warum funktioniert bei mir dann dieser Ausdruck nicht(LED leuchtet nicht 
blau)?
1
ws2812_setleds((struct cRGB*){0,0,255},1);

Es wär schön, wenn jemand einen kleinen Anhaltspunkt für mich hätte...

Danke
Hannes
Gast #4636049
Lesenswert?

Hallo Hannes,

das Problem liegt an dem Ausdruck "(struct cRGB*){0,0,255}" im 
Funktionsaufruf.
Mit diesem Typecast weist du den Compiler an, den Wert von "{0,0,255}" 
als Pointer-Adresse zu betrachten.
Was du erreichen möchtest, ist folgendes:
1
struct cRGB blue = {0, 0, 255};
2
ws2812_setleds(&blue, 1);

oder kürzer (ab C99):
1
ws2812_setleds(&(struct cRGB) {0, 0, 255}, &blue,1);

Viele Grüße,
Marcel

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