S
Stefan Reuther
Guest
Hans-Peter Diettrich wrote:
Nein, ist sie nicht. Hast du die Standards Ăźberhaupt mal gelesen?
Der C-Standard schreibt konzeptuell 8 "translation phases" vor, von
denen 1-4 den Präprozessor betreffen, 5-7 den Compiler und 8 den Linker.
Lediglich fĂźr die AusfĂźhrung von Pragmas durch den Compiler (konzeptuell
in Phase 4) wird ein gesonderter, undefinierter Mechanismus benĂśtigt.
Mit welchem MSVC hast du das probiert? Vor 20 Jahren, als der noch nicht
mal MSVC hieĂ?
Der Präprozessor kann die #pragma-Anweisungen einfach stehenlassen und
an den Compiler weitergeben. So hat das gcc vor 20 Jahren schon gemacht.
Oder er ersetzt sie durch _Pragma-Anweisungen.
Stefan
Sieghard Schicktanz schrieb:
Man kann den Präprozessor natßrlich auch "nicht zum C-Compiler gehÜrig"
ansehen.
Nicht nach den neueren C Standards. Dort ist die Tokenisierung und
Verarbeitung von Präprozessor-Anweisungen, Kommentaren, Makro-Expansion
etc. untrennbar ineinander und mit dem Parser verwoben.
Nein, ist sie nicht. Hast du die Standards Ăźberhaupt mal gelesen?
Der C-Standard schreibt konzeptuell 8 "translation phases" vor, von
denen 1-4 den Präprozessor betreffen, 5-7 den Compiler und 8 den Linker.
Lediglich fĂźr die AusfĂźhrung von Pragmas durch den Compiler (konzeptuell
in Phase 4) wird ein gesonderter, undefinierter Mechanismus benĂśtigt.
Mircosoft hält sich natßrlich nicht daran, und hat Konstrukte in den
Windows Headern, die nur von MSVC wunschgemäà interpretiert werden. Nach
MSVC leitet /##/ als // einen Kommentar ein, nach C98 sind das zwei /
und damit fehlerhaft.
Mit welchem MSVC hast du das probiert? Vor 20 Jahren, als der noch nicht
mal MSVC hieĂ?
Auch #pragma kann z.B. nur dann eine Wirkung entfalten, wenn es bis zum
Compiler gelangt. Das verbietet eindeutig die Verwendung eines
unabhängigen Präprozessors, der zur Zeit von K&R noch Standard war und
lange Zeit noch als selbständiges Tool zum Compiler mitgeliefert wurde.
Der Präprozessor kann die #pragma-Anweisungen einfach stehenlassen und
an den Compiler weitergeben. So hat das gcc vor 20 Jahren schon gemacht.
Oder er ersetzt sie durch _Pragma-Anweisungen.
Stefan