2010-11-25 5 views
3

Mögliche Duplizieren:
When should BOOL and bool be used in C++?Refactoring MFC, verwenden Sie BOOL oder Bool

Ich bin derzeit eine große C++ Code-Basis aufzuräumen, die in erster Linie MFC ist und hat eine Menge von BOOL-Variablen und Parametern. Es enthält auch eine Reihe von Bools, die im Vergleich eine Compiler-Warnung ergeben;

Warnung C4800: boolsche: Forcierungswert 'true' oder 'falsch' (Warnung von Leistung)

Der Plan ist, ohne Warnungen auf eine saubere Kompilierung bewegen Bool, bei Warnstufe 4 in VS2008. Meine Auswahl ist wie folgt;

  • Ändern Sie alle bools zu BOOLs Ändern Sie alle
  • BOOLs zu bools
  • Haben der Compiler Warnung 4800

berichten Was würden Sie tun, und was noch wichtiger ist, warum? Ich lehne mich derzeit an die erste Option, da der Code eine Menge MFC enthält, gibt es eine Reihe von Framework-Funktionen, die BOOL zurückgeben.

Bearbeiten Hoppla, previously asked question gibt mir die Informationen, die ich will. Schließen ...

+1

Nur als Referenz finden Sie in dieser Diskussion Warnung C4800: http://StackOverflow.com/Questions/1847860/Why-is-there-a-Performance-warning-on-cast-pointer-to-Bool –

Antwort

3

Das Ändern von Bool zu BOOL global kann Ihnen nicht helfen. Sie haben wahrscheinlich Funktionen, die bool zurückgeben oder Bool akzeptieren. Sie werden wahrscheinlich ein Problem mit einem anderen ändern. BOOL to bool kann auch nicht geändert werden, da MFC (und Win32 API) BOOL verwenden.

Ich würde jede in meinem Code erzeugte Warnung separat behandeln. Ändern BOOL zu Bool kann einfach, Compiler unabhängig erfolgen:

BOOL myBOOL; bool mybool; 
mybool = (myBOOL != 0); 

Andersherum könnte es durch eine explizite Umwandlung (z statisch gegossen) sein, die die Warnung entfernen sollte.

Diese Vorgehensweise hat auch den Vorteil, dass Sie gezwungen sind, alle BOOL-Konvertierungspunkte von/nach bool zu überprüfen, und Sie könnten andere Probleme (oder nicht :) finden.