Hallo, ich sehe in Beispielen häufig folgende C-Konstruktion :
1 | #define XX \
|
2 | do { irgendetwas; nochetwas; } while(0)
|
Ist dies nicht dasselbe wie :
1 | #define XX \
|
2 | { irgendetwas; nochetwas; }
|
Oder wozu dient das ?
|
Forum: Compiler & IDEs do while FrageHallo, ich sehe in Beispielen häufig folgende C-Konstruktion :
Ist dies nicht dasselbe wie :
Oder wozu dient das ? Es handelt sich um einen rein syntaktischen Trick, bei dem der Inhalt des Makros sich exakt so benimmt wie ein einzelner Funktionsaufruf. Insbesondere funktionieren damit solche Dinge wie:
Ist mir auch schon aufgefallen, aber zur Frage: Warum immer noch ein do() oder while() dazu, warum nicht einfach nur geschweifte Klammern? Es gibt syntaktische Kontexte, bei denen die geschweiften Klammern wohl nicht den passenden Effekt haben. Genaues fällt mir gerade nicht ein, müsste ich wühlen danach. Beispiel: if (...) Macro(); else Syntax Error: if (...) {...}; else Korrekt: if (...) do{...}while(0); else Sonst müsstest du schreiben if (...) Macro() else und das sieht doch etwas komisch aus. Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
|
|