Moin,
seit einiger Zeit stochere ich hieran herum, finde aber keinen neuen
Ansatz oder gar eine Lösung dafür. Bitte schaut mal mit Kenneraugen
darauf.
1 | $ make
|
2 | Building Library
|
3 | Building Lichterkette
|
4 | Lichterkette.c: In function 'changeColorsInLEDs':
|
5 | Lichterkette.c:46:5: error: 'led' undeclared (first use in this function)
|
6 | led[i].r = 0; led[i].g = 0; led[i].b = 0;
|
7 | ^
|
8 | Lichterkette.c:46:5: note: each undeclared identifier is reported only once for each function it appears in
|
9 | Lichterkette.c: In function 'main':
|
10 | Lichterkette.c:66:14: warning: unused variable 'led' [-Wunused-variable]
|
11 | struct cRGB led[ramPrefs.numLED];
|
12 | ^
|
13 | make: *** [Lichterkette] Error 1
|
14 | $
|
Die Lib, die hier erfolgreich gebaut wurde, ist die ws2812b von Tim, die
hier ja in einigen Threads behandelt wird.
Diese Compilerbeschwerden sind natürlich kein Einzelfall, auch hier im
Forum tauchen die auf, jedoch waren die gesichteten Fälle stets
vergessene #define oder kleinere Unachtsamkeiten.
Mein Code übersetzte tadellos bis zu dem Zeitpunkt, als ich die
Codeschnipsel für die Fälle 'd' und 'n' in die Funktion
changeColorsInLEDs() auslagerte. Jetzt motzt der Compiler, daß eben eine
Deklaration noch nicht erfolgt sei. Wenn ich die Funktion, die zZt
oberhalb der main() liegt, einfach mal nach ganz unten packe, kriege ich
dieselben Beschwerden, nur mit vertauschter Reihenfolge von Warning und
Error und mit anderen Zeilennummern. Die Strategie des gcc ist scheinbar
nicht vom Anfang bis zum Ende.
Der banale Tip bzw. Ansatz wäre, die Fkt. changeColorsInLEDs() doch
wieder einfach seinzulassen und deren Codehappen zurück in main() zu
packen. Der ist aber sehr ungeeignet, da ich ja noch einiges mehr in die
Fkt. reinpacken will und damit redundanten Code vermeiden will und eig.
alles erreichen will, warum man Funktionen baut.
Wie kriege ich diesen Deadlock weg?
VG, Jan.