1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
bei volatile uint16_t position = (minval + maxval) / 2; meckert er rum, geht das nicht so? Diese variablen verwende ich im restlichen code noch.. muss ich mit define arbeiten? lg PoWl
|
Anzeige
|
initializer element is not constant
bei volatile uint16_t position = (minval + maxval) / 2; meckert er rum, geht das nicht so? Diese variablen verwende ich im restlichen code noch.. muss ich mit define arbeiten? lg PoWl
Gast
#1010157
> bei > volatile uint16_t position = (minval + maxval) / 2; > meckert er rum, geht das nicht so? Nicht in C. In C sind — anders als in C++ — const-Variablen zwar read-only, haben aber immer noch Variablencharakter und können deswegen nicht als Initialisierer für globale oder statische Variablen dienen. > Diese variablen verwende ich im restlichen code noch.. muss ich mit > define arbeiten? Genauso wird das normalerweise gemacht. Alternativ, wenn auch etwas gekünstelt, gehen auch Enums:
Gast
#1010693
Hallo, entweder du arbeitest mit define, das muss funktionieren, oder du initialisierst die Variable nicht bei der Deklaration, sondern später im Code. Im Übrigen setzt const alleine die Variable nicht in den ROM-Bereich, das ist normal trotzdem noch im Ram, der Compiler warnt nur bei Schreibzugriffen darauf. Beim AVR-GCC brauchst du dafür _attribute_ PROGMEM. Im LibC-Manual steht, wie man das verwendet. Grüße, Peter Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|