Rückgabewert beim Aufruf von WinAPI-Funktionen testen
-
Ne, man muss es natürlich nicht (ich mache es wahrscheinlich auch nie), aber manchmal ist es vielleicht aufgrund der Lesbarkeit besser...
Ansonsten hast du natürlich recht.
-
Original erstellt von Bashar:
**Loggy: Warum sollte man? Eine Bedingung gilt als wahr, wenn sie in bool umgewandelt true ist, dhif (b)
ist äquivalent
if (b == true)
**Falsch! Beispiel:
BOOL b; int* pi = (int*)&b; *pi = 23; // ;) if(b) printf("b != 0"); if(b == TRUE) printf("b == TRUE");
-
was soll mir das jetzt sagen? Ich redete von bool, nicht von BOOL.
-
hä?? Natürlich hat Bashar recht.
-
Original erstellt von Bashar:
was soll mir das jetzt sagen? Ich redete von bool, nicht von BOOL.Ist das Gleiche. Meinetwegen ersetze in obigem Code BOOL durch bool.
-
OK, ich habs mir mal angesehen. Ich tipp auf UB, bin mir aber nicht ganz sicher, da ich die Stelle im Standard nicht finde. GCC übersetzt den Vergleich mit true jedenfalls mit "cmpb $1, -1(%ebp)". Das heißt, die Autoren von GCC gehen davon aus, dass eine bool-Variable niemals einen anderen Wert als 0 oder 1 haben kann. Normalerweise macht man solche Annahmen aber nur, wenn der Standard das so definiert, bzw. jede Operation, die das verletzen könnte, als UB bezeichnet.
Sollte es wieder erwarten kein UB sein, hast du Recht, ansonsten ist dein Snippet kein C++
-
Keine Ahnung, was du da faselst.
Aber mein Compiler (BCB 3) nimmt den Code ohne zu murren an. Im Übrigen ist es genau das, was ich am Anfang auch nicht geglaubt habe. Loggy hat mich da eben eines Besseren belehrt.
-
Es geht um Undefined Behaviour, nicht darum was irgendein Compiler annimmt oder nicht.
-
Ahh... UB == Undefined Behaviour == Undefiniertes Verhalten. Na, das muss einem doch erstmal gesagt werden.
-
Oops, ich hätte es wohl wenigstens einmal ausschreiben sollen