117471
08.02.2021, aktualisiert um 15:06:37 Uhr
1370
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#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:
1
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 649612
Url: https://administrator.de/forum/kurze-frage-zu-typdeklaration-649612.html
Ausgedruckt am: 09.01.2025 um 02:01 Uhr
2 Kommentare
Neuester Kommentar
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.