Forum: Compiler & IDEs Inkrement auf Pointer liefert Warning


von Michael M. (Gast)


Lesenswert?

Hallo!

Folgender Code bringt mich ins Grübeln...
Die Funktion prüft einen Puffer (uarx[]), der im Interrupt mit 
empfangenen chars befüllt wird, auf zeichenweise Gleichheit mit einem 
übergebenen String (*command).
Wirs ein CR empfangen, wird das flag uarx_done gesetzt und die Funktion 
kommt über die erste if-Abfrage hinaus.
1
unsigned char chk_for_cmd(const char *command)
2
{
3
   volatile unsigned char *uarxp=&uarx[0];
4
5
   if(uarx_done)
6
   {   /* uart rx done - process receivings */
7
      while(*uarxp == *command)
8
      {  /* if current characters are identical, *
9
          * increase to check next character     */
10
         *uarxp++;
11
         if(*++command=='\0')
12
         {  /* next character to compare matches string-end *
13
             * -> whole command-string detected -> return 1 */
14
            uarx_done=0;
15
            uarx_clr();
16
            return 1;
17
         }
18
      }
19
   }
20
   /* no return 1 -> command not detected -> return 0 */
21
   return 0;
22
}

Das funktioniert auch alles soweit, allerdings nur, wenn ich den 
command-Pointer in der if-Abfrage (if(*++command=='\0')) 
inkrementiere.
Schreibe ich ein einfaches *command++; in die Zeile davor, warnt mich 
der Compiler damit:
warning: value computed is not used.
Und außerdem funktioniert dann auch die Abfrage nicht mehr.

Kann mir das jemand erklären?

Danke, Grüße,
Michael

von Ch D. (chrisu) Benutzerseite


Lesenswert?

Hi,
wenn dann ohne den Stern: command++; das sollte gehen.

von Michael M. (Gast)


Lesenswert?

Ch D. schrieb:
> wenn dann ohne den Stern: command++; das sollte gehen.

Ja, natürlich! Du meine Güte, das ist mal eine peinliche Anfrage...
Dass das so keinen Sinn ergibt, hab ich um diese Uhrzeit nicht mehr 
gesehen.

Danke!
Michael

von der mechatroniker (Gast)


Lesenswert?

*++command:

ist aber gleichbedeutend mit

command++;

nur dass im ersten Fall der inkrementierte Pointer noch dereferenziert 
wird (und der gelesene Wert weggeschmissen). Sollte also keinen 
Unterschied machen.

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.