Gast
#951939
hallo, ich habe eine kleine C-Frage.Kann ich überhaupt in C als Makrodefinition schreiben, fall es sich um ein String handelt. Mein Compiler erkennt überhaupt kein Fehler. #define ERROR "Time ist out"
|
Anzeige
|
Benutzung von define
Gast
#951939
hallo, ich habe eine kleine C-Frage.Kann ich überhaupt in C als Makrodefinition schreiben, fall es sich um ein String handelt. Mein Compiler erkennt überhaupt kein Fehler. #define ERROR "Time ist out" Kannst du schreiben und kann je nach Einsatzort (Quellcodezeile) auch funktionieren. Schön ist das Denglisch aber nicht ;-)
Gast
#951954
Der Compiler hat damit auch nichts zutun, hier arbeitet der Präprozessor. Was hast du über vor? Ich behaupte mal einfach, dass wir mehr Infos von dir benötigen. cu
Gast
#951966
Du kannst in die Makrodefinition nahezu alles schreiben, was du lustig bist. Makros bewirken einfach eine Textersetzung (grob vergleichbar mit der Substitute- oder Replace-Funktion von Texteditoren), bevor der Compiler über den Programmtext läuft. yxcv wrote: > Der Compiler hat damit auch nichts zutun, hier arbeitet der > Präprozessor. Der Compiler meckert aber dann, wenn das Makro an falscher Stelle falsch eingesetzt wird. @Gast (welch origineller Nick...): #define definiert lediglich eine Textersetzung. Wenn Du das wie oben schreibst und dann im Programm z.B.
schreibst, dann ist das syntaktisch völlig korrekt und es gibt keinen Grund für eine Fehlermeldung. Der Präprozessor macht da schlicht die Ersetzung des Makros ERROR mit dem in der Makrodefinition angegebenen "Wert", der Compiler bekommt dann zu lesen
...wobei da, wie von Stefan bereits angedeutet, zwar für den Compiler kein Syntaxfehler vorliegt, jedoch für die Rechtschreibprüfung... Wenn Du hingegen im Programm z.B. schreibst
dann ist das syntaktisch falsch und führt dementsprechend zu einer Fehlermeldung. Grundsätzlich kann man mit #define alles definieren. Fehlermeldungen gibt es erst dann, wenn die Textersetzung durch den Präprozessor an der betreffenden Stelle im Programm zu einem Fehler führt.
Gast
#952013
> Wenn Du hingegen im Programm z.B. schreibst > > ERROR; > > dann ist das syntaktisch falsch und führt dementsprechend zu einer > Fehlermeldung. Das ist vollkommen korrekt, wenn die Zeile innerhalb einer Funktion steht, allerdings wenig sinnbehaftet ;-)
Gast
#952102
die Zeile
ist also korrekt?!? Das wage ich zu bezweifeln... ;)
Gast
#952121
Das ist genauso korrekt wie
In beiden Fällen ist die Anweisung ein Ausdruck, dessen Ergebniswert nicht weiterverwendet wird. Im Gegensatz zum printf-Ausdruck hat "Time ist out" keinen Seiteneffekt, ist deswegen unnütz und wird von einem ordentlichen Compiler wegoptimiert. Klaus wrote: > die Zeile >
> > ist also korrekt?!? Das wage ich zu bezweifeln... ;) Naja, es gibt ne Warnmeldung à la "statement has no effect". Ich hätte besser ein Beispiel gewählt, bei dem es eine echte Fehlermeldung gibt...
Gast
#954321
ist genauso korrekt wie
... und schliesslich kann mit dem selben Recht auch return-Wert einer Funktion unter den Teppich fallen Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|