117471
Feb 08, 2021, updated at 14:06:37 (UTC)
1212
2
0
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:
Mein Compiler quittiert die Übersetzung mit dieser Fehlermeldung:
In Zeile 13 wird ja mit dem % der Datentyp forciert. Wenn ich darauf verzichte, funktioniert alles:
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
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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 649612
Url: https://administrator.de/contentid/649612
Printed on: April 25, 2024 at 01:04 o'clock
2 Comments
Latest comment
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.
Gruß j.