Forum: Mikrocontroller und Digitale Elektronik atoi discards volatile qualifier from pointer target type


von Mirko (Gast)


Lesenswert?

guten morgen,

ich habe zwei warnungen zu volatile Variablen, die ich nicht weiß, wie 
ich die beheben soll
Ich erhalte einen char array. Das auswerten, also ob Kommando oder Wert 
habe ich schon gemacht. Das funktioniert auch. Auch wenn für value mehr 
als 4 chars kommen, funktioniert die Auswertug ( wird vorher abgefangen 
und ich komme erst gar nicht dahin). Jetzt wollte ich noch die Warnungen 
beheben. Hier komme ich aber nicht weiter.
1
volatile unsigned char data_in[8]
1
char command[5]
2
uint16_t value;
3
4
if(!(strncmp(data_in, "get", 3))
5
...
6
...
7
value = atoi(data_in);
8
...
9
...

Die warnung habe ich bei strncmp und atoi.
aber wie bekomme ich es weg? data_in wird in der ISR gesetzt und muss ja 
dementsprechend volatile sein

von Dirk B. (dirkb2)


Lesenswert?

Die beiden Funktionen behandeln den Parameter aber als nicht-volatile.
Änderungen an den Variablen die während der Ausführung der Funktion 
passieren müssen die Funktionen nicht berücksichtigen.

Weg bekommst du es mit einem cast beim Aufruf der Funktionen.

von Oliver S. (oliverso)


Lesenswert?

Da wirst du das volatile an der Stelle wegcasten müssen, die Funktionen 
aus der C-Standardlib wollen halt die Parameter ohne. Das gleiche 
Problem gibt es mit const, was zu ähnlichen Warnungen führt.

Oliver

von Coronianer (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.