Compiler Warnings That Are Off by Default
Updated: July 2009
The compiler includes warnings that are turned off by default. If a warning is turned off by default, most users would not want to see it. However, you can enable such a warning by using one of the following options.
The following warnings are turned off by default.
C4061 (level 4) | enumerator 'identifier' in a switch of enum 'enumeration' is not explicitly handled by a case label |
C4062 (level 3) | enumerator 'identifier' in a switch of enum 'enumeration' is not handled |
C4191 (level 3) | 'operator/operation': unsafe conversion from 'type of expression' to 'type required' |
C4242 (level 4) | 'identifier': conversion from 'type1' to 'type2', possible loss of data |
| 'operator': conversion from 'type1' to 'type2', possible loss of data |
| 'function': no function prototype given: converting '()' to '(void)' |
| 'function': member function does not override any base class virtual member function |
| 'virtual_function': no override available for virtual member function from base 'class'; function is hidden |
| 'class': class has virtual functions, but destructor is not virtual |
| 'function': no override available for virtual member function from base 'type'; function is hidden |
| 'operator': unsigned/negative constant mismatch |
| nonstandard extension used : 'var' : loop control variable declared in the for-loop is used outside the for-loop scope |
| 'operator': expression is always false |
| 'conversion': truncation from 'type1' to 'type2' |
| behavior change: 'member1' called instead of 'member2' |
| 'action': conversion from 'type_1' to 'type_2', signed/unsigned mismatch |
| 'function': function signature contains type 'type'; C++ objects are unsafe to pass between pure code and mixed or native |
| missing type specifier - int assumed. Note: C no longer supports default-int |
| 'function': unreferenced inline function has been removed |
| 'type name': type-name exceeds meta-data limit of 'limit' characters |
| expression before comma evaluates to a function which is missing an argument list |
| function call before comma missing argument list |
| 'operator': operator before comma has no effect; expected operator with side-effect |
| expression before comma has no effect; expected expression with side-effect |
| 'operator': operator before comma has no effect; did you intend 'operator'? |
| expression has no effect; expected expression with side-effect |
| '__assume' contains effect 'effect' |
| informational: catch(…) semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught |
| #pragma warning: there is no warning number 'number' |
| 'derived class': default constructor could not be generated because a base class default constructor is inaccessible |
| 'derived class': copy constructor could not be generated because a base class copy constructor is inaccessible |
| 'derived class': assignment operator could not be generated because a base class assignment operator is inaccessible |
| digraphs not supported with -Ze. Character sequence 'digraph' not interpreted as alternate token for 'char' |
| 'instance': construction of local static object is not thread-safe |
| XML document comment has an ambiguous cross reference |
| 'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives' |
| 'user-defined type': possible change in behavior, change in UDT return calling convention |
| 'function': signature of non-private member contains assembly private native type 'native_type' |
| 'function': function not inlined |
| function 'function' selected for inline expansion |
| storing 32-bit float result in memory, possible loss of performance |
| 'bytes' bytes padding added after construct 'member_name' |
| conversion from 'type1' to 'type2' is sign-extended. This may cause unexpected runtime behavior |
| nonstandard extension used : 'type' : local types or unnamed types cannot be used as template arguments |
| trigraph detected: '??%c' replaced by '%c' |
| wide string literal cast to 'LPSTR' |
| string literal cast to 'LPWSTR' |
| 'declarator': a GUID can only be associated with a class, interface, or namespace |
| illegal copy-initialization; more than one user-defined conversion has been implicitly applied |
| we are assuming the type library was built for number-bit pointers |
| reinterpret_cast used between related classes: 'class1' and 'class2' |
| 'function': profile-guided optimizations disabled because optimizations caused profile data to become inconsistent |