/**
* Use this macro to do assertions in unit tests
*/
#define B_ASSERT(EXPECTED,ACTUAL)\
incrementAssertionCount();\
if ( BSysTestUtility_assert(EXPECTED,\
ACTUAL) == false )\
{BSysTestUtility_error(EXPECTED,ACTUAL,\
__FILE__,__LINE__,getTestInfo());}
Anmerkungen
Dieses Makro ist Teil eines Unit-Test Frameworks für C++. Der Fehler ist offensichtlich und blieb dennoch lange unerkannt. Die Frage ist, warum?
Für Nicht-C++-Programmierer: #define ist streng genommen nicht Bestandteil der Programmiersprache C++. Wenn wir z.B. das Folgende schreiben:
#define MWST 7.6
Dann wird der Präprozessor den symbolischen Namen MWST aus dem Quellcode entfernen und durch 7.6 ersetzen; der Compiler bekommt MWST also nie zu sehen.