Mike schrieb:
> const uint8_t Size = 10;
> uint8_t array[Size];
>
> Er scheint nicht zu verstehen, dass Size konstant ist, wie die
> Fehlermeldung vermuten läßt
Der Compiler hat dir doch ganz ausführlich gesagt, was du falsch
gemacht hast. Ich formuliere dir dein eigenes Zeug mal so um, daß du es
besser verstehen kannst:
1 | const unsigned char Size;
|
2 | Size = 10;
|
3 | unsigned char array[Size];
|
4 | ...
|
Das 'const' bewirkt beim Schreiben für einen µC, daß deine Variable
nicht im RAM, sondern im Maschinencode (aka Flash) angordnet ist. Damit
ist sie per se readonly. Beim PC ist sie ebenfalls irgendwo im Code,
wenngleich auch dieser vom OS in den RAM geladen ist. Ob da ein
schreibender Zugriff möglich ist, hängt vom OS und dessen
Sicherheitseinstellungen ab.
Bedenke mal, daß der Preprozessor ein wesentlicher Bestandteil der
Toolchain ist, sowohl bei C als auch bei C++. Also sollte deine Quelle
etwa so aussehen:
1 | #define Size 10
|
2 | unsigned char array[Size];
|
W.S.