Inkrement auf Pointer liefert Warning

Gast #1712279
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
Gast #1712496
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren