Zitat von
Ramkhamhaeng
Irgendwelche Python-JIT-Compiler scheitern daran bestimmt
Den Vorteil eines If-Statements mit einer const-Variablen gegenüber einer Kapselung via #if MAKRONAME > 0 sehe ich aber nicht wirklich. Es hat beides seine Berechtigung. Beim Makro ist die Intention des Programmierers ihmo klarer zu sehen.
Makros sind eine komplett orthogonale Sprache - voellig losgeloest von der Semantik und den ueblichen Abstraktionsschichten von C/C++. Damit machen sie saemtliche Fehlermeldungen kaputt. Prinzipiell muss man verdammt aufpassen, um sich nicht staendig in den Fuss zu schiessen. Debugging ist natuerlich auch unmoeglich.
Hier mal ein ganz besonderes Juwel:
Code:
if (
#if SIZEOF_VOID_P == 4
/* 32 bit architecture */
p == NULL || /* default is yes */
#else
/* 64 bit architecture */
p != NULL && /* default is no */
#endif
strcasecmp(p, "yes") == 0)
MT_create_thread(&GDKvmtrim_id, GDKvmtrim, &GDK_mem_maxsize,
MT_THR_JOINABLE);
return 1;