rasked schrieb:
> So wie es Klaus macht wäre es natürlich auch möglich ist aber leider
> nicht mehr so übersichtlich.
Ganz ehrlich:
Wenn du auf Übersichtlichkeit stehst, mach dir dafür eine Funktion.
Makros sehen nur auf den ersten Blick 'übersichtlich' aus. Sie sind es
nicht. Sie sind ein besonders eleganter Weg, wie man sich ohne viel
Nachdenken, ganz schnell bei komplizierteren Dingen möglichst
schmerzhaft selbst in den Fuss schiessen kann.
> Wie mache ich die Variante von Klaus mit if-else?
>
1 | > #define X {
|
2 | > if (auswahl==1) 0x02;
|
3 | > else if (auswahl==2) 0x04;
|
4 | > else if (auswahl==3) 0x08;
|
5 | > else 0x10;
|
6 | > }
|
7 | >
|
>
> So stimmt es sicher nicht. Könnt ihr das berichtigen?
Wenn eine Makrozeile mit einem \ (und nichts mehr dahinter) beendet
wird, so bedeutet das, das die nächste Zeile auch noch zum Makro gehört.
Und jetzt probierst du dann dein neues Makro hier aus
if( irgendwas )
X;
else
was anderes
und versuchst aus den Fehlermeldungen auf das Problem zu schliessen.
Fazit: Wenn Makros komplizierter werden, ist eine Funktion die bessere
Lösung.