Verwendung einer struct und Rückgabe aus Funktion

OP #4631635
Lesenswert?
• ▲
▼
Hallo,

Leider bin ich aus anderen Threads nicht schlau geworden...

Ich nutze die WS2812 Bibliothek für die RGB-LED Ansteuerung.
In entspr. Headerdatei ist die entsprechende Struktur(cRGB) so 
definiert:
1
struct cRGB  { uint8_t g; uint8_t r; uint8_t b; };

In meinem Programm greife ich folgendermaßen darauf zu(enthält nur die 
wichtigsten Bestandteile):
1
#include "includes/light_ws2812.h"
2
#include <math.h>
3
#include <stdint.h>
4
#include <stdlib.h>
5

6
struct cRGB LED_COLOR[1];
7
struct cRGB NEW_COLOR[1];
8

9
uint8_t pseudofunction();
10

11
void main(){
12
.
13
.
14
.
15
NEW_COLOR[0] = pseudofunction();
16
ws2812_setleds(New_COLOR,1);
17
}
18

19
uint8_t pseudofunction(){
20
LED_COLOR[0].r = 255;
21
LED_COLOR[0].g = 127;
22
LED_COLOR[0].b = 0;
23

24
return LED_COLOR[0];
25
}

Jetzt las ich über die Verwendung der struct als Pointer für die 
Rückgabe.
Leider konnte ich das nicht auf mein Beispiel übertragen, da ich 
Fehlermeldungen bekam.
Wäret ihr so nett und könntet mir einen Anhaltspunkt geben?

Gruß
Hannes
Persönliche Seite #4631643
Lesenswert?
• ▲
▼
Johannes H. schrieb:
> struct cRGB LED_COLOR[1];

Welchen Sinn hat ein Array mit einem Element?

> void pseudofunction(){
> LED_COLOR[0].r = 255;
> LED_COLOR[0].g = 127;
> LED_COLOR[0].b = 0;
>
> return LED_COLOR[0];
> }

Eine Funktion muss einen Rückgabewert haben, damit sie etwas zurückgeben 
kann.

Deine Funktion aber hat keinen Rückgabewert - das hast Du mit dem void 
angegeben.
OP #4631653
Lesenswert?
• ▲
▼
Hallo Rufus,

Da hast Du allerdings recht. Ich hatte das schnell zusammengeschrieben 
und nicht an den Rückgabewert gedacht. Hab's oben korrigiert.

Die Struktur mit nur einem Element hatte ich daher, dass ich vorher ein 
Strukturarray(für mehrere LEDs) hatte und das dann einfach reduziert 
habe. Aber klar, dann kann ich auch gleich "struct cRGB LED_COLOR;" 
schreiben.

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