einzelnes struct an structarray zurückgeben

Gast #4405172
Lesenswert?
• ▲
▼
Hallo,

ich habe ein struct Array.
1
struct cHSV
2
{
3
  union {
4
    struct {
5
      union {
6
        uint8_t hue;
7
      uint8_t h; };
8
      union {
9
        uint8_t saturation;
10
        uint8_t sat;
11
      uint8_t s; };
12
      union {
13
        uint8_t value;
14
        uint8_t val;
15
      uint8_t v; };
16
    };
17
    uint8_t raw[3];
18
  };
19
};
20
const int NUM_LEDS = 10;
21
struct cHSV leds[NUM_LEDS];

Nun würde ich gerne mit einer Funktionen eine Led ändern.
1
leds[0] = setHSV(hue, sat, val);
1
struct cHSV setHSV( uint8_t hue, uint8_t sat, uint8_t val)
2
{
3
  struct cHSV hsv;
4
  hsv.hue = hue;
5
  hsv.hue = sat;
6
  hsv.hue = val;
7
  return hsv;
8
}


Aufgerufen werden soll das ganze so, innerhalb einer anderen Funktionen. 
Das geht leider nicht, die Leds bleiben unberührt.
1
leds[0] = setHSV(hue, sat, val);
Gast #4405222
Lesenswert?
• ▲
▼
1
struct cHSV setHSV(uint8_t hue, uint8_t sat, uint8_t val)
2
{
3
  struct cHSV hsv[1];
4
  hsv[0].hue = hue;
5
  hsv[0].sat = sat;
6
  hsv[0].val = val;
7
  
8
  return *hsv;
9
}

So geht es. Kann man das ganze auch ohne, dass ich hsv[1] machen muss. 
Also nur hsv?
#4405229
Lesenswert?
• ▲
▼
Marion schrieb:
>
1
> struct cHSV setHSV(uint8_t hue, uint8_t sat, uint8_t val)
2
> {
3
>   struct cHSV hsv[1];
4
>   hsv[0].hue = hue;
5
>   hsv[0].sat = sat;
6
>   hsv[0].val = val;
7
> 
8
>   return *hsv;
9
> }
>
> So geht es. Kann man das ganze auch ohne, dass ich hsv[1] machen muss.
> Also nur hsv?

Natürlich.
Das geht schon so, wie du das im Eröffnungsposting gezeigt hast.
Wenn nicht, liegt der Fehler im Code, den du nicht gezeigt hast.
#4405234
Lesenswert?
• ▲
▼
Oops
1
struct cHSV setHSV( uint8_t hue, uint8_t sat, uint8_t val)
2
{
3
  struct cHSV hsv;
4
  hsv.hue = hue;
5
  hsv.hue = sat;
6
  hsv.hue = val;
7
  return hsv;
8
}

Lauter Zuweisungen an hsv.hue?

Fehler im Code oder Tippfehler im geposteten Ausschnitt, der so gar 
nicht in deinem Programm steht?

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.