Makros: Mehrere Funktionen/Makros aufrufen
-
Folgendes Beispiel:
#define a() ... #define b() ... #define a_und_b() \ {a(); b();}
Hat bisher immer geklappt, nun aber folgendes:
if(...) a_und_b(); // ergibt {a(); b();}; else(...) // fehler, da hinte dem block oben ein semikolon a();
Gibts da ne gute Alternative (mit Makros). Ich brauch die Makros weil mein Embedded Compiler irgendwie nie eine Call wegoptimieren will/kann, und hier soll es kein Call geben.
Gruß
-
#define a_und_b() \ {a(); b();} while (0)
probiers aus...
-
c.rackwitz schrieb:
#define a_und_b() \ {a(); b();} while (0)
probiers aus...
Hab grade kein Compiler mehr da, aber da kommt ja dann das hier raus:
if(...) {a(); b();} while (0); else(...) a();
Und das geht imo leider auch net
-
c.rackwitz schrieb:
#define a_und_b() \ {a(); b();} while (0)
Du meinst do { ... } while(0), schätze ich?
-
so mach ich es immer:
#define a_und_b() {a(); b();} 0
-
Das funktioniert aber hier nicht, wenn das if nicht geklammert ist. do { ... } while(0) ist das übliche Konstrukt für genau so einen Fall.
-
merde, drei zeichen sind mein untergang!