hi, Eine Frage zu unten angegebenem Define: #define MAKRO_1 P3DIR |= BIT4; P3OUT |= BIT4; werden beide Befehle ausgeführt, oder endet das Define nach dem ersten Semikolon? mfg
'Das #define' interessiet sich nicht für Semikolons. Die werden schlicht mitkopiert.
...kommt drauf an, wie du das Makro einsetzt:
1 | while (irgendetwas) MAKRO_1; |
dann nur bis zum 1. Semikolon.
1 | while (irgendetwas) {MAKRO_1} |
dann bis zu 2. Semikolon.
Man beachte allerdings, daß nicht unbedingt das passiert, was man erwartet, wenn man z.B. schreibt:
1 | if (irgendwas) |
2 | MAKRO1; |
kommt drauf an schrieb: > ...kommt drauf an, wie du das Makro einsetzt: > >
1 | > while (irgendetwas) MAKRO_1; |
2 | > |
> > dann nur bis zum 1. Semikolon. > >
1 | > while (irgendetwas) {MAKRO_1} |
2 | > |
> > dann bis zu 2. Semikolon. Es empfiehlt sich in solchen Fällen, im Makro eine Konstruktion wie diese zu benutzen:
1 | #define GAGA do { a(); b(); c(); } while(0)
|
Man beachte do/while. Geschweifte Klammern alleine können in die Hose gehen.
Sven P. schrieb: > Es empfiehlt sich in solchen Fällen, im Makro eine Konstruktion wie > diese zu benutzen: die Frage war eine andere und das mit dem while nur ein Beispiel..., man hätte es auch mit einem if oder ählichem das Problem verdeutlichen können!
Also Leute... solche Tricks brauchten unsere Vorfahren. Als man noch mit Fernschreiber und ed programmierte. Gibt es noch C-Compiler ohne Inline Funktionen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.