Inkrement auf Pointer liefert Warning

Gast #1712279
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 #1712282
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
Gast #1712496
*++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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.