Hallo Nik,
Nun, es ist eine Warnung!
Der Compiler will dir nur mitteilen, dass hier etwas schief gehen könnte, zumindest fehlen dem Compiler die Angaben um garantieren zu können, dass der Code nicht versucht auf Bereiche ausserhalb des Array zuzugreifen.
Das ist halt der "Fluch" der immer intelligenteren Compiler.
Ganz früher gab es eigentlich gar keine Warnungen des Compiler und man hatte oft tagelang einen Bug gesucht, welcher dann z.B. nur in der Zuweisung an einen kleineren Datentyp bestand Es gab damals ein Zusatzprogramm, namens "lint", welches recht penibel solche, nicht explizit gecasteten, Zuweisungen aufgezeigt hat. Heute ist die Entsprechung von lint in jedem Compiler implementiert und wurde natürlich auch weiter entwickelt.
Das Überschreiten von Array-Grenzen ist ein typisches Problem von C, wie das verwenden von nicht initialisierten Zeigern. Solche Bugs zerschiessen dann gerne den Stack (Auto Variablen), überschreiben ganz andere Variablen oder können sogar Fehler in einem ganz anderen Task erzeugen. Da kann man dann tagelang den Bug suchen.
Du kannst natürlich einfach die entsprechende Warnung im Compiler abschalten
Ich bevorzuge die Methode, die Warnung nur für die entsprechende Funktion, oder nur Zeile, abzuschalten (#pragma).
Damit dokumentiert man, dass man sich diese Stelle angesehen hat und die nicht ganz saubere Programmierung so gewollt ist.
An anderer Stelle im Code wird dann weiterhin die Warnung angezeigt, wenn d etwas nicht sauber ist.
MfG Peter(TOO)
Lesezeichen