warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
The reason being that because I was including some Windows file that included windef.h. In windef.h, it says: typedef int BOOL;
What I was trying to do was to cast that BOOL to bool. Of course we can suppress the warning easily by the #pragma directives as discussed earlier but there has to be a better and a simpler way. Then it clicked, how about a simple != 0 comparison. Here is the sample code:
//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy
#include<iostream>
#include<windows.h>
#include<windef.h>
using namespace std;
int main()
{
BOOL someVal = 1;
bool firstApproach = someVal; //Generates warning C4800
cout<<"firstApproach = "<<firstApproach<<endl;
bool secondApproach = (someVal != 0); //No Warning
cout<<"secondApproach = "<<secondApproach<<endl;
return 0;
}
No comments:
Post a Comment