> uint8_t num = sizeof(ledarray); // Liefer nicht den richtigen Wert zurück
Jeder anständige C-Compiler sagt Dir das als Warnung - jene sind
entgegen landläufiger Meinung halt nicht dazu da, um ignoriert zu
werden.
> Array-Grösse muss als separates Arg übergeben werden.
Nein, muss nicht(tm). Wenn man sich das Argument um jeden Preis sparen
will kann man sich auch einfach eine 'end-of-array'-Marke setzen. Bei
einem C-Style String wäre das 0. Der TO könnte eine Farbe definieren
bzw. reservieren, die dafür herhalten muss.
Was schöner oder einfacher ist hängt aber immer vom Kontext ab. Ich
würde
1 | sizeof(gruppex) /sizeof(gruppex[0])
|
in die Liste der tatsächlichen Parameter mit aufnehmen, ggf. auch in
ein schönes Makro à la
1 | #define GIB_MICH_GROESSE(x) (sizeof(x) /sizeof((x)[0]))
|
verpackt.
HTH und nix für ungut.