117471
Goto Top

Kurze Frage zu Typdeklaration

Hallo,

hier in kurzes Beispiel aus einem Tutorial. Es geht darum, eine LED am GPIO-Port eines RaspberryPi blinken zu lassen:

#include <wiringPi.h>
#include <stdio.h>
#define ledPin 0 //define the led pin number

void main(void)
{

     printf("Program is starting ... \n");  

     wiringPiSetup(); //Initialize wiringPi.
     pinMode(ledPin, OUTPUT);//Set the pin mode

     printf("Using pin%d\n",%ledPin); //Output information on terminal  

     while(1) {
          digitalWrite(ledPin, HIGH); //Make GPIO output HIGH level
          printf("led turned on >>>\n"); //Output information on terminal  
          delay(1000); //Wait for 1 second
          digitalWrite(ledPin, LOW); //Make GPIO output LOW level
          printf("led turned off <<<\n"); //Output information on terminal  
          delay(1000); //Wait for 1 second
     }

}

Mein Compiler quittiert die Übersetzung mit dieser Fehlermeldung:

blink.c:13:25: error: expected expression before ‘%’ token
printf("Using pin%d\n",%ledPin); //Output information on terminal

In Zeile 13 wird ja mit dem % der Datentyp forciert. Wenn ich darauf verzichte, funktioniert alles:

printf("Using pin%d\n",ledPin); //Output information on terminal  

Ich habe bis jetzt einen sehr guten Eindruck von meinem Tutorial und wundere mich ein bisschen über die "Inkompatiblität", zumal ich das Szenario 1:1 nachgebaut habe. Auch verstehe ich nicht ganz, mit welcher Motivation die Ersteller von dem Tutorial das % vor ledPin gesetzt haben. Das Ausgabeformat wird ja letztendlich im Formatstring festgelegt und die Parameter für printf haben da doch auch keine weiteren Anforderungen (oder?).

Da ich bis jetzt noch nicht viel mit c gemacht habe, ist das für mich ein großes Rätsel. Für den Lerneffekt wäre mir sehr wichtig zu wissen, was es mit dieser kleinen "Inkompatiblität" auf sich hat.

Gibt es da Differenzen bezüglich unterschiedlicher Compiler? Oder haben die bei der Übersetzung Compilerflags genutzt, die das Ganze etwas lascher handhaben?

Gruß,
Jörg

Content-Key: 649612

Url: https://administrator.de/contentid/649612

Printed on: April 25, 2024 at 01:04 o'clock

Mitglied: 147323
Solution 147323 Feb 08, 2021 updated at 15:37:33 (UTC)
Goto Top
Das wird ein Tippfehler gewesen sein, das Prozentzeichen(%) ist nur als Formatspezifizierer im Format-String gültig direkt vor der eigentlichen Variablen hat das da nichts zu suchen.

Gruß j.
Mitglied: 117471
117471 Feb 08, 2021 at 17:48:56 (UTC)
Goto Top
Hallo,

vielen lieben Dank - dann ist das Tutorial ja doch kompatibel zu meinem Compiler face-smile

Gruß,
Jörg