Martin Speiser: C/C++ Debugging in VC

Beitrag lesen

Hi Wolfgang,

das ist zwar eigentlich kein Forum für C/C++-Entwickler, aber da muss ich einschreiten:

2.) Verify()
Um auch in der Releaseversion ein argument in der Art und Weise wie  ASSERT() auszuwerten muss das Makro VERIFY() benutzt werden.

Das ist falsch. VERIFY() ist im Gegensatz zu ASSERT() zwar auch in einem Release-Build definiert, aber wertet den Ausdruck dann nicht aus. Der Unterschied ist dabei, dass das ASSERT()-Makro in Release samt Argument entfernt wird, das Argument von VERIFY() wird aber ausgeführt.

Wenn man eine Funktion hat, die eine Fehlernummer zurückbringt, kann man den Fehler mit den Funktionen überprüfen und eine Warnung erhalten.

Kleines Beispiel:

ASSERT( LineTo( hDC, x, y ) );

Diese Zeile wird nur in einem Debug-Build ausgeführt, im Release wird die Linie nicht gezogen.

VERIFY( LineTo( hDC, x, y ) );

Hier wird die Linie auch im Release-Build gezogen, nur gibt es keine Warnung mehr bei einem etwaigen Fehler. (Kann da was schiefgehen? Ja. Win95/98 haben ein Koordinatensystem von -32767 bis +32767, NT ein bißchen mehr)

Gruß,
Martin