Copyright © 2008-2018, dave - Code samples on Dave's Brain is licensed under the Creative Commons Attribution 2.5 License. However other material, including English text has all rights reserved.
Browse - Programming Tips - How can I fix: warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
Date: 2010jan24 Product: VC++ Q. How can I fix: warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) A. The Visual Studio compiler makes a big deal of int to bool conversions. For example, if you do:bool bPunct = ispunct(c); // causes warningYou'll get the warning. So how about this attempt at a fix:bool bPunct = (bool) ispunct(c); // still causes warningNo luck. The help file says its "by design" for a cast not to hide the warning. Here are a number of ways to get around the warning. Use a macro to do the conversion:#define MKBOOL(_a) ((_a) != 0) bool bPunct = MKBOOL(ispunct(c)); // No warningUse BOOL (which is an int in Windows):BOOL bPunct = ispunct(c); // No warningDisable the warning (perhaps in your stdafx.h file):#pragma warning(disable: 4800) // disables the warning
Add a commentSign in to add a comment