
Original geschrieben von [UEP]Xyz
johnwayne: versteh nicht genau was du meinst. die klammern kann man nicht weglassen, du kannst z.b. keine bloecke zuweisen oder innerhalb von ( ) variablen deklarieren etc. eine schleife duerfte das auch nicht sein![]()

Original geschrieben von JohnWayne
ich schätze das ist irgendeine spezialregel die in irgendeinem C-Buch steht das sie theoretisch möglich ist oder so...
also wer das wirklich weiß bitte mal posten
#ifdef __GNUC__
# define max(a,b) \
({ typeof (a) _a = (a); \
typeof (b) _b = (b); \
_a > _b ? _a : _b; })
#else
# define max(a,b) (a > b ? a : b)
#endif
Was meinen die mit 'side effects' ?But this definition computes either a or b twice, with bad results if the operand has side effects.

Ein besserer Kritikpunkt wäre gewesen, dass man mit dem Beispiel hidden Bugs produziert, wenn man nur unter GCC programmiert.Original geschrieben von ViperDK
kein c(++) coder der nicht gerade darauf steht, eigenheiten des GCC zu finden und zu verwenden kann mit dem code was anfangen ohne die gcc doku zu lesen. dann schreiben die gnuler schon in ihre doku man moege diese konstrukte nicht in c++ headern einsetzen weil man sich dort sonst probleme einhandeln kann.
aber compa wird schon recht haben, es kommt von gnu also muss es wohl was gutes sein (will nit wissen wie der abgehen wuerde wenn ms auf so ne idee gekommen waere).