STL und ihre #defines
-
hole leute
hat jemand von euch ne ahnung warum man solche konstrukte recht haeufig in der STL findet ? hat das einen bestimmten grund oder was soll der bloedsinn eigendlich ?
#define _TRY_BEGIN try { #define _CATCH(x) } catch (x) { #define _CATCH_ALL } catch (...) { #define _CATCH_END }Meep Meep
-
Ich glaube, das ist noch nicht einmal zur "besseren Lesbarkeit" gedacht, sondern weil es flexibler ist. Sollte z.B. das keyword "try" durch "__try" ersetzt werden (oder auf einem anderen System/Compiler so benötigt werden), braucht man einfach nur das define zu ersetzen. So wild rumspekuliert

-
n (nicht ganz ernst von mir gemeinter) VOrschlag wäre, dass das n Pascalprogrammierer geschrieben hat, der sich net von seinen BEGINs und ENDs lösen konnte^^
EDIT://
Badestrandserklärung ist vermutlich nicht so falsch.
-
fast noch schlimmer finde ich folgendes
#define _BITMASK_OPS(Ty) \ inline Ty& operator&=(Ty& _Left, Ty _Right) \ { /* return _Left &= _Right */ \ _Left = (Ty)((int)_Left & (int)_Right); return _Left; \ } \oder das:
#define _RERAISEda denkt man sich was sich da wohl wichtiges dahinter verstecken mag, dabei ist das nichts. rein gar nichts.
mir sieht die STL teilweise so aus, als wenn da ein fanatischer C programmierer dabei gewesen waere und seinen frusst an die STL benutzer ablassen wollte.
-
Was soll eigentlich immer dieses "STL"? Wovon redest du? Du zeigst uns hier eine Implementierung. Das ist doch nicht DIE STL. Und selbst wenn, dann frage doch bitte den Implementierer, was er sich dabei gedacht hat. Woher sollen wir das denn bitte wissen?