018
24.08.2007, 14:45 Uhr
virtual
Sexiest Bit alive (Operator)
|
Zitat von Pablo: |
ja, du bist böser aber wieso ist die allgemeine Meinung, dass Makros böse sind und dass man sie vermeiden sollte? Vielleicht liegt es daran, dass ich nur ein C Programmierer bin, aber ich finde, dass Makros ganz schön Tipparbeit sparen können, vor allem in C.
|
Tommix Beispiel ist ja grade ein Standardbeispiel für die Nachteile von Macros:
C++: |
#define max(a,b) (((a) > (b)) ? (a) : (b))
int i = 4; int j = max(++i, 3); // Ups: i ist ja 6, also um zwei größer int k = max(++i, 10) // Hm: i ist nun 7, also um eins größer
|
Dh da Du prinzipiell bei Macros nicht weisst, wie oft die parameter im Macrotext vorkommen und nicht wissen kannst, wie häufig sie tatsächlich ausgewertet werden, kannst Du auch nicht wissen, wie häufig Nebeneffekte ausgewertet werden.
Ein weitere Mankos (grade im Vergleich zu Templates in der C++ welt) sind fehlende Typisierung [ z.B. max("a", "b") ] und fehlende Typsicherheit. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |