C1XX Warnings

The table below lists the warning numbers that the front-end C++ compiler (C1XX) is known to be capable of issuing in version 13.00.9466.

Warning numbers that the product documentation does not list among the C/C++ Build Errors are highlighted yellow. For some, the code that can raise the warning may turn out at closer inspection to be unreachable. That some warnings are undocumented ought be no surprise. The compiler has undocumented features and, assuming that this is deliberate, it would be careless of Microsoft to let the documentation reveal an undocumented feature by listing the errors that can follow from misuse of that feature. For instance, since start_map_region is not documented as an argument for #pragma directives, it is no surprise that warnings C4194 and C4195 are also not documented.

Text for each warning message is reproduced from the corresponding resource string in the executable, with placeholders resolved as much as possible in the style of the product documentation.

Each warning number is shown with a warning level, and sometimes levels, from 1 to 4. These are the levels at which the compiler is known to request the warning (perhaps at different levels in different circumstances). If the warning occurs while in its default state, it is displayed if and only if this requested warning level does not exceed the cut-off level (0 to 4, such as set through the /W option). The requested level is ignored if a level has been forced for the warning (as through /w1, /w2, /w3 and /w4) or if the warning has been disabled (as through /wd) or if the warning has been promoted to an error (as through /we). A warning that has been set to display once (as through /wo) is in the default state until its first occurrence, then it is disabled.

For two warnings, C4165 and C4294, the corresponding level is shown as D. This indicates a contrivance in the code, as if to request “disabled” as the warning level. If the warning is in its default state, then it does not display, no matter what the cut-off level. It displays only if a level has been forced for it or if it has been promoted to an error. These warnings are unaffected by /Wall.

For some warnings, only the warning level is highlighted yellow. Again, this indicates a disagreement with the product documentation, specifically that the latter gives a different level or omits the highlighted level. In many of these cases, the product documentation is demonstrably incorrect even with its own examples. Such evident carelessness presumably arises because the product documentation was correct once upon a time but has not been updated by the technical writers when the programmers have changed the software. Not even a company with Microsoft’s resources can attend to every minutia, but one must wonder what meaning to give to claims of having made a reasonable effort when such basic (and essentially unskilled) checking is neglected.

Warning C4199 is shown with two cases. For one, no level is shown. This is meant to indicate that the warning level is not entirely in the control of the compiler. This warning, which Microsoft does not document, can be triggered externally and seems to be intended for use by attribute provider DLLs. The other case arises internally. Its message text is not from a resource string but is hard-coded in the compiler’s data.

Warning Levels Message
C4002 1 too many actual parameters for macro 'identifier'
C4003 1 not enough actual parameters for macro 'identifier'
C4005 1 'identifier' : macro redefinition
C4006 1 #undef expected an identifier
C4007 3 'function' : must be 'attribute'
C4008 3 'identifier' : 'attribute' attribute ignored
C4010 1 single-line comment contains line-continuation character
C4012 1 float constant in a cross compilation
C4018 3 'expression' : signed/unsigned mismatch
C4028 1 formal parameter number different from declaration
C4030 1 first formal parameter list longer than the second list
C4031 1 second formal parameter list longer than the first list
C4035 3 'function' : no return value
C4036 1 unnamed type as actual parameter
C4038 1 'modifier' : illegal class modifier
C4042 1 'identifier' : has bad storage class
C4044 1 'macro_name': macros are not expanded for attribute names or properties
C4047 1 'operator' : 'identifier1' differs in levels of indirection from 'identifier2'
C4048 1 different array subscripts : 'identifier1' and 'identifier2'
C4049 1 compiler limit : terminating line number emission
C4053 4 one void operand for '?:'
C4056 2 overflow in floating-point constant arithmetic
C4059 1 pascal string too big, length byte is length % 256
C4060 3 switch statement contains no 'case' or 'default' labels
C4061 4 enumerate 'identifier' in switch of enum 'enumeration' is not explicitly handled by a case label
C4062 3 enumerate 'identifier' in switch of enum 'enumeration' is not handled
C4063 4 case 'identifier' is not a valid value for switch of enum 'enumeration'
C4064 4 switch of incomplete enum 'enumeration'
C4065 3 switch statement contains 'default' but no 'case' labels
C4066 3 characters beyond first in wide-character constant ignored
C4067 1 unexpected tokens following preprocessor directive - expected a newline
C4068 1 or 4 unknown pragma
C4073 3 initializers put in library initialization area
C4074 1 initializers put in compiler reserved initialization area
C4075 1 initializers put in unrecognized initialization area
C4076 1 'typemod' : can not be used with type 'typename'
C4077 1 unknown check_stack option
C4079 1 unexpected token 'token'
C4080 1 expected identifier for segment name; found 'symbol'
C4081 1 expected 'token1'; found 'token2'
C4083 1 expected 'token'; found identifier 'identifier'
C4085 1 expected pragma parameter to be 'on' or 'off'
C4086 1 expected pragma parameter to be '1', '2', '4', '8', or '16'
C4091 1 or 2 'attributes' : ignored on left of 'type' when no variable is declared
C4094 2 untagged 'token' declared no symbols
C4096 1 'a': interface is not a COM interface; will not be emitted to IDL
C4097 1 expected pragma parameter to be 'restore' or 'off'
C4099 2 'identifier' : type name first seen using 'objecttype1' now seen using 'objecttype2'
C4100 4 'identifier' : unreferenced formal parameter
C4101 3 'identifier' : unreferenced local variable
C4102 3 'label' : unreferenced label
C4103 1 'filename' : used #pragma pack to change alignment
C4109 1 unexpected identifier 'identifier'
C4112 1 or 4 #line requires an integer between 1 and number
C4114 1 same type qualifier used more than once
C4116 1 unnamed type definition in parentheses
C4117 1 macro name 'name' is reserved, 'Command' ignored
C4119 1 different bases 'base1' and 'base2' specified
C4121 4 'symbol' : alignment of a member was sensitive to packing
C4122 1 'function' : alloc_text applicable only to functions with C linkage
C4123 1 different base expressions specified
C4124 1 __fastcall with stack checking is inefficient
C4125 4 decimal digit terminates octal escape sequence
C4127 4 conditional expression is constant
C4129 1 'character' : unrecognized character escape sequence
C4130 4 'operator' : logical operation on address of string constant
C4133 3 'type' : incompatible types - from 'type1' to 'type2'
C4138 1 '*/' found outside of comment
C4141 1 'modifier' : used more than once
C4143 1 pragma 'same_seg' not supported; use __based allocation
C4144 1 'expression' : relational expression as switch expression
C4145 1 'expression1' : relational expression as switch expression; possible confusion with 'expression2'
C4146 2 unary minus operator applied to unsigned type, result still unsigned
C4150 2 deletion of pointer to incomplete type 'type'; no destructor called
C4154 1 deletion of an array expression; conversion to pointer supplied
C4155 1 deletion of an array expression without using the array form of 'delete'
C4156 2 deletion of an array expression without using the array form of 'delete'; array form substituted
C4158 1 assuming #pragma pointers_to_members(full_generality, inheritance)
C4159 3 #pragma pragma(pop,...) : has popped previously pushed identifier 'identifier'
C4160 1 #pragma pragma(pop,...) : did not find previously pushed identifier 'identifier'
C4161 3 #pragma pragma(pop...) : more pops than pushes
C4162 1 'identifier' : no function with C linkage found
C4163 1 'identifier' : not available as an intrinsic function
C4164 1 'identifier' : intrinsic function not declared
C4165 D 'HRESULT' is being converted to 'bool'; are you sure this is what you want?
C4166 1 illegal calling convention for constructor/destructor
C4167 1 'function' : only available as an intrinsic function
C4168 1 compiler limit : out of debugger types, delete program database 'database' and rebuild
C4172 1 returning address of local variable or temporary
C4174 1 'name' : not available as a #pragma component
C4175 1 #pragma component(browser, on) : browser info must initially be specified on the command line
C4176 1 'subcomponent' : unknown subcomponent for #pragma component browser
C4177 1 pragma pragma should be at global scope
C4178 1 case constant 'constant' too big for the type of the switch expression
C4180 1 qualifier applied to function type has no meaning
C4181 1 qualifier applied to reference type ignored
C4182 1 #include nesting level is number deep; possible infinite recursion
C4183 1 'identifier': missing return type; assumed to be a member function returning 'int'
C4185 1 ignoring unknown #%s attribute 'attribute'
C4186 1 #directive attribute 'attribute' requires count arguments; ignored
C4187 1 #directive attributes 'attribute1' and 'attribute2' are incompatible; both ignored
C4188 1 constant expression is not integral
C4189 4 'identifier' : local variable is initialized but not referenced
C4190 1 'identifier1' has C-linkage specified, but returns UDT 'identifier2' which is incompatible with C
C4191 3 'operator/operation' : unsafe conversion from 'type of expression' to 'type required'
Calling this function through the result pointer may cause your program to fail
C4192 3 automatically excluding 'name' while importing type library 'library'
C4193 3 #pragma warning(pop) : no matching '#pragma warning(push)'
C4194 1 #pragma start_map_region cannot be nested; ignored
C4195 1 #pragma stop_map_region used without matching #pragma start_map_region; ignored
C4196 1 expected 'token1' or 'token2'; found 'token3'
C4197 3 'type' : top-level volatile in cast is ignored
C4199   text
1 please use __typeof
C4200 2 nonstandard extension used : zero-sized array in struct/union
C4201 4 nonstandard extension used : nameless struct/union
C4203 4 nonstandard extension used : union with static member variable
C4207 4 nonstandard extension used : extended initializer form
C4208 4 nonstandard extension used : delete [exp] - exp evaluated but ignored
C4211 4 nonstandard extension used : redefined extern to static
C4213 4 nonstandard extension used : cast on l-value
C4215 1 nonstandard extension used : long float
C4216 1 nonstandard extension used : float long
C4217 1 'operator' : member template functions cannot be used for copy-assignment or copy-construction
C4223 1 or 4 nonstandard extension used : non-lvalue array converted to pointer
C4224 1 nonstandard extension used : formal parameter 'identifier' was previously defined as a type
C4226 1 nonstandard extension used : 'keyword' is an obsolete keyword
C4227 1 anachronism used : qualifiers on reference are ignored
C4228 1 nonstandard extension used : qualifiers after comma in declarator list are ignored
C4229 1 anachronism used : modifiers on data are ignored
C4230 1 anachronism used : modifiers/qualifiers interspersed, qualifier ignored
C4231 3 nonstandard extension used : 'identifier' before template explicit instantiation
C4233 1 nonstandard extension used : 'keyword' keyword only supported in C++, not C
C4234 1 nonstandard extension used : 'keyword' keyword reserved for future use
C4235 1 nonstandard extension used : 'keyword' keyword not supported in this product
C4236 1 nonstandard extension used : 'keyword' is an obsolete keyword, see documentation for __declspec(dllexport)
C4237 1 nonstandard extension used : 'keyword' keyword is reserved for future use
C4238 4 nonstandard extension used : class rvalue used as lvalue
C4239 4 nonstandard extension used : 'token' : conversion from 'type' to 'type'
C4240 3 nonstandard extension used : access to 'classname' now defined to be 'access specifier', previously it was defined to be 'access specifier'
C4242 3 'identifier' : conversion from 'type1' to 'type2', possible loss of data
C4243 3 conversion conversion from 'type1' to 'type2' exists, but is inaccessible
C4244 2, 3 or 4 'conversion' : conversion from 'type1' to 'type2', possible loss of data
C4245 4 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch
C4250 2 'class1' : inherits 'class2::member' via dominance
C4251 2 'identifier' : classkey 'identifier' needs to have dll-interface to be used by clients of classkey 'identifier'
C4254 4 'operator' : conversion from 'type1':'bits' to 'type2':'bits', possible loss of data
C4256 4 'function' : constructor for class with virtual bases has '...'; calls may not be compatible with older versions of Visual C++
C4257 1 'structure_name' : class has no data members; initialization ignored
C4258 1 'variable' : definition from the for loop is ignored; the definition from the enclosing scope is used
C4263 4 'function' : member function does not override any base class virtual member function
C4264 4 'virtual_function' : no override available for virtual member function from base 'class'; function is hidden
C4265 3 'class' : class has virtual functions, but destructor is not virtual
 instances of this class may not be destructed correctly
C4266 4 'virtual_function' : no override available for virtual member function from base 'class'; function is hidden
C4267 3 'conversion' : conversion from 'size_t' to 'type', possible loss of data
C4268 4 'identifier' : 'const' static/global data initialized with compiler generated default constructor fills the object with zeros
C4273 1 'function' : inconsistent dll linkage
C4274 1 #ident ignored; see documentation for #pragma comment(exestr, 'string')
C4275 2 non dll-interface classkey 'identifier' used as base for dll-interface classkey 'identifier'
C4277 1 imported item 'class::identifier' exists as both data member and function member; data member ignored
C4279 3 'identifier': identifier in type library 'library' is a keyword; use the 'rename' qualifier
C4280 3 'operator ->' was self recursive through type 'type'
C4281 3 'operator ->' recursion occurred through type 'type'
C4282 3 then through type 'type'
C4283 3 and through type 'type'
C4285 2 return type for 'identifier::operator ->' is recursive if applied using infix notation
C4286 1 'type1' : is caught by base class ('type2') on line number
C4287 3 'operator' : unsigned/negative constant mismatch
C4288 1 nonstandard extension used : 'var' : loop control variable declared in the for-loop is used outside the for-loop scope; it conflicts with the declaration in the outer scope
C4289 4 nonstandard extension used : 'var' : loop control variable declared in the for-loop is used outside the for-loop scope
C4290 3 C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
C4291 1 'declaration' : no matching operator delete found; memory will not be freed if initialization throws an exception
C4292 3 compiler limit : terminating debug information emission for enum 'enum' with member 'member'
C4294 D C++ Exception Specification missing
C4296 4 'operator' : expression is always constant
C4297 1 'function' : function assumed not to throw an exception but does
C4298 4 'identifier': identifier in type library 'library' is already a macro; renaming to '__identifier'
C4299 4 'identifier': identifier in type library 'library' is a keyword; renaming to '__identifier'
C4301 1 'derivedclass::function': overriding virtual function only differs from 'baseclass::function' by const/volatile qualifier
C4302 2 'conversion' : truncation from 'type1' to 'type2'
C4303 1 cast from 'type1' to 'type2' is deprecated, use static_cast, __try_cast or dynamic_cast
C4305 1, 2 or 4 'identifier' : truncation from 'type1' to 'type2'
C4307 2 'operator' : integral constant overflow
C4308 2 negative integral constant converted to unsigned type
C4309 2 'conversion' : truncation of constant value
C4310 4 cast truncates constant value
C4311 1 'variable' : pointer truncation from 'type' to 'type'
C4312 1 'variable' : conversion from 'type' to 'type' of greater size
C4313 1 'function' : '%%specifier' in format string conflicts with argument number of type 'type'
C4318 1 passing constant zero as the length to memset
C4319 1 'operator' : zero extending 'type' to 'type' of greater size
C4321 1 automatically generating an IID for interface 'interface'
C4322 1 automatically generating a CLSID for class 'class'
C4323 1 re-using registered CLSID for class 'class'
C4324 4 'struct_name' : structure was padded due to __declspec(align())
C4325 1 attributes for standard section 'section' ignored
C4326 1 return type of 'function' should be 'type1' instead of 'type2'
C4329 1 __declspec(align()) is ignored on enum
C4336 4 import cross-referenced type library 'type_lib1' before importing 'type_lib1'
C4337 4 cross-referenced type library 'typelib1' in 'typelib2' is being automatically imported
C4339 4 'type' : use of undefined type detected in CLR meta-data - use of this type may lead to a runtime exception
C4340 1 'value' : value wrapped from positive to negative value
C4341 1 or 3 'value' : signed value is out of range for enum constant
C4353 1 nonstandard extension used: constant 0 as function expression. Use '__noop' function intrinsic instead
C4355 1 or 4 'this' : used in base member initializer list
C4360 1 the template parameter list for 'function' is incompatible with the template parameter list for its parent class 'class'
C4370 3 'class' : layout of class has changed from a previous version of the compiler due to better packing
C4371 3 'class' : layout of class may have changed from a previous version of the compiler due to better packing of member 'member'
C4372 3 'function' : calling convention for UDT return value has changed from a previous version of the compiler
C4373 3 'derived-class function': virtual function overrides 'base-class function', previous versions of the compiler did not override when parameters only differed by const/volatile qualifiers
C4374 1 'function1': pure virtual function will not be overridden by non-virtual 'function2' in superclass
C4389 4 'operator' : signed/unsigned mismatch
C4390 3 ';' : empty controlled statement found; is this the intent?
C4391 1 'signature' : incorrect return type for intrinsic function, expected 'type'
C4392 1 'signature' : incorrect number of arguments for intrinsic function, expected 'number' arguments
C4401 1 'bitfield' : member is bit field
C4402 1 must use PTR operator
C4403 1 illegal PTR operator
C4404 3 period on directive ignored
C4405 1 'identifier' : identifier is reserved word
C4406 1 operand on directive ignored
C4407 1 cast between different pointer to member representations, compiler may generate incorrect code
C4409 1 illegal instruction size
C4410 1 illegal size for operand
C4411 1 'identifier' : symbol resolves to displacement register
C4414 3 'function' : short jump to function converted to near
C4440 1 calling convention redefinition from 'convention' to 'convention' ignored
C4442 1 embedded null terminator in __annotation argument. Value will be truncated.
C4502 1 'linkage specification' requires use of keyword 'extern' and must precede all other specifiers
C4503 1 'identifier' : decorated name length exceeded, name was truncated
C4505 4 'function' : unreferenced local function has been removed
C4506 1 no definition for inline function 'function'
C4508 1 'function' : function should return a value; 'void' return type assumed
C4509 3 nonstandard extension used: 'function' uses SEH and 'object' has destructor
C4510 4 'class' : default constructor could not be generated
C4511 4 'class' : copy constructor could not be generated
C4512 4 'class' : assignment operator could not be generated
C4513 4 'class' : destructor could not be generated
C4514 4 'function' : unreferenced inline function has been removed
C4515 4 'namespace' : namespace uses itself
C4516 4 'class::symbol' : access-declarations are deprecated; member using-declarations provide a better alternative
C4517 4 access-declarations are deprecated; member using-declarations provide a better alternative
C4518 1 'specifier' : storage-class or type specifier(s) unexpected here; ignored
C4519 1 default template arguments are only allowed on a class template; ignored
C4520 3 'class' : multiple default constructors specified
C4521 3 'class' : multiple copy constructors specified
C4522 3 'class' : multiple assignment operators specified
C4523 3 'class' : multiple destructors specified
C4526 1 'function' : static member function cannot override virtual function 'virtual function'
override ignored, virtual function will be hidden
C4527 4 instances of type 'class' can never be destroyed - user-defined destructor required
C4529 1 'member_name' : forming a pointer-to-member requires explicit use of the address-of operator ('&') and a qualified name
C4530 1 C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
C4532 1 'continue' : jump out of __finally block has undefined behavior during termination handling
C4533 1 initialization of 'variable' is skipped by 'goto label'
C4534 3 'constructor' will not be a default constructor for classkey 'class' due to the default argument
C4535 3 calling _set_se_translator() requires /EHa
C4536 4 'type-name' : type-name exceeds meta-data limit of 'limit' characters
C4537 1 'object' : '.' applied to non-UDT type
C4540 1 dynamic_cast used to convert to inaccessible or ambiguous base; run-time test will fail ('type1' to 'type2')
C4541 1 'identifier' used on polymorphic type 'type' with /GR-; unpredictable behavior may result
C4542 1 Skipping generation of merged injected text file, cannot write filetype file: 'file': message
C4543 3 Injected text suppressed by attribute 'no_injected_text'
C4550 1 expression evaluates to a function which is missing an argument list
C4551 1 function call missing argument list
C4552 1 'operator' : operator has no effect; expected operator with side-effect
C4553 1 'operator' : operator has no effect; did you intend 'operator'?
C4554 3 'operator' : check operator precedence for possible error; use parentheses to clarify precedence
C4555 1 expression has no effect; expected expression with side-effect
C4556 1 value of intrinsic immediate argument 'value' is out of range 'lowerbound - upperbound'
C4557 3 '__assume' contains effect 'effect'
C4558 1 value of operand 'value' is out of range 'lowerbound - upperbound'
C4560 1 'argument' : non-constant default arguments unavailable when importing function
C4561 1 '__fastcall' incompatible with the '/clr' option: converting to '__stdcall'
C4563 1 '/Gr - __fastcall calling convention' option incompatible with the '/clr' option: changing to '/Gz - __stdcall calling convention'
C4564 4 method 'method' of classkey 'class' defines unsupported default parameter 'parameter'
C4584 1 'class1' : base-class 'class2' is already a base-class of 'class3'
C4600 1 #pragma 'macro name' : expected a valid non-empty string
C4602 1 #pragma pop_macro : 'macro name' no previous #pragma push_macro for this identifier
C4608 3 'union_member' has already been initialized by another union member in the initializer list, 'union::member'
C4610 4 object 'class' can never be instantiated - user defined constructor required
C4611 4 interaction between 'function' and C++ object destruction is non-portable
C4612 1 error in include filename
C4613 1 'segment' : class of segment cannot be changed
C4615 1 #pragma warning : unknown user warning type
C4616 1 #pragma warning : warning number 'number1' out of range, must be between 'number2' and 'number3'
C4618 1 pragma parameters included an empty string, pragma ignored
C4619 3 #pragma warning : there is no warning number 'number'
C4620 1 no postfix form of 'operator ++' found for type 'type', using prefix form
C4621 1 no postfix form of 'operator --' found for type '%$pS', using prefix form
C4622 3 overwriting debug information formed during creation of the precompiled header in object file: 'file'
C4623 4 'derived class' : default constructor could not be generated because a base class default constructor is inaccessible
C4624 1 'derived class' : destructor could not be generated because a base class destructor is inaccessible
C4625 4 'derived class' : copy constructor could not be generated because a base class copy constructor is inaccessible
C4626 4 'derived class' : assignment operator could not be generated because a base class assignment operator is inaccessible
C4630 1 'symbol' : 'specifier' storage-class specifier illegal on member definition
C4640 3 'instance' : construction of local static object is not thread-safe
C4645 3 function declared with __declspec(noreturn) has a return statement
C4646 3 function declared with __declspec(noreturn) has non-void return type
C4650 1 debugging information not in precompiled header; only global symbols from the header will be available
C4651 1 '/Dmacro' specified for precompiled header but not for current compile
C4652 1 compiler option 'option' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header
C4653 1 compiler option 'option' inconsistent with precompiled header; current command-line option ignored
C4655 1 'symbol' : variable type is new since the latest build, or is defined differently elsewhere
C4656 1 'symbol' : data type is new or has changed since the latest build, or is defined differently elsewhere
C4657 1 expression involves a data type that is new since the latest build
C4658 1 'symbol' : function prototype is new since the latest build, or is declared differently elsewhere
C4659 1 #pragma 'pragma' : use of reserved segment 'segment' has undefined behavior, use #pragma comment(linker, ...)
C4661 1 'identifier' : no suitable definition provided for explicit template instantiation request
C4662 1 explicit instantiation; template-class 'identifier1' has no definition from which to specialize 'identifier2'
C4663 4 C++ language change: to explicitly specialize class template 'identifier' use the following syntax:
C4666 1 'declaration' : function differs from 'declaration' only by calling convention
C4667 1 'function' : no function template defined that matches forced instantiation
C4668 4 'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives'
C4669 1 'cast' : unsafe conversion: 'class' is a managed type object
C4670 4 'identifier' : this base class is inaccessible
C4672 4 'identifier1' : ambiguous. First seen as 'identifier2'
C4673 4 throwing 'identifier' the following types will not be considered at the catch site
C4674 1 'method' should be declared 'static' and have exactly one parameter
C4680 4 'class' : coclass does not specify a default interface
C4681 4 'class' : coclass does not specify a default interface that is an event source
C4682 4 'parameter' : no directional parameter attribute specified, defaulting to [in]
C4683 1 'function': event source has an 'out'-parameter; exercise caution when hooking multiple event handlers
C4684 1 'attribute' : WARNING!! attribute may cause invalid code generation: use with caution
C4685 1 expecting '> >' found '>>' when parsing template parameters
C4696 1 /ZBnumber option out of range; assuming 'number'
C4709 4 comma operator within array index expression
C4710 4 'function' : function not inlined
C4714 4 function 'function' marked as __forceinline not inlined
C4772 1 #import referenced a type from a missing type library; 'type' used as a placeholder
C4786 3 'identifier' : identifier was truncated to 'number' characters in the category information
C4793 4 native code generated for 'attribute' function 'function'
C4800 3 'type' : forcing value to bool 'true' or 'false' (performance warning)
C4803 1 'method' : the raise method has a different storage class from that of the event, 'event'
C4804 1 'operation' : unsafe use of type 'bool' in operation
C4805 1 'operation' : unsafe mix of type 'type' and type 'type' in operation
C4806 1 'operation' : unsafe operation: no value of type 'type' promoted to type 'type' can equal the given constant
C4807 1 'operation' : unsafe mix of type 'type' and signed bit field of type 'type'
C4808 1 case 'value' is not a valid value for switch condition of type 'bool'
C4809 1 switch statement has redundant 'default' label; all possible 'case' labels are given
C4810 1 value of pragma pack(show) == n
C4811 1 value of pragma conform(forScope, show) == value
C4820 4 'identifier' : 'bytes' bytes padding added after member 'member'
C4821 1 Unicode files are not currently supported.
C4829 1 'function': parameters of gc type or value type are not supported; standard 'function' signature required
C4832 1 token 'token' is illegal after UDT 'type name'
C4906 1 string literal cast to 'type'
C4912 1 'attribute': attribute has undefined behavior on a nested UDT
C4916 1 in order to have a dispid, 'function': must be introduced by an interface
C4917 1 'declarator' : a GUID can only be associated with a class, interface or namespace
C4918 4 'character' : invalid character in pragma optimization list
C4920 1 enum enum member member=value already seen in enum enum as member=value
C4921 3 'attribute': attribute value 'value' should not be multiply specified
C4922 1 'base-class function': function declared as '__sealed'; will not be overridden by 'derived-class function'
C4924 1 #import: enum 'enum' declared inside '%s' - ignored (not yet supported)
C4925 1 'method': dispinterface method cannot be called from script
C4926 1 'identifier': symbol is already defined: attributes ignored
C4928 1 illegal copy-initialization; more than one user-defined conversion has been implicitly applied
C4929 1 'file': typelibary contains a union; ignoring the 'embedded_idl' qualifier
C4930 1 'prototype': prototyped function not called (was a variable definition intended?)
C4931 4 we are assuming the type library was built for number-bit pointers
C4932 4 __identifier(identifier) and __identifier(identifier) are indistinguishable
C4933 1 'function1' and 'function2' only differ by top-level CV-qualifiers in their arguments. This usage is deprecated and may be an error in the future
C4934 1 '__delegate(multicast)' is deprecated, use '__delegate' instead
C4935 1 assembly access specifier modified from 'access'
C4944 1 'symbol' : cannot import symbol from 'assembly1': as 'symbol' already exists in the current scope
C4945 1 'symbol' : cannot import symbol from 'assembly2': as 'symbol' has already been imported from another assembly 'assembly1'
C4946 1 reinterpret_cast used between related classes: 'class1' and 'class2'
C4994 1 'attribute': attribute is marked with the 'qualifier::' or '__qualifier::' usage qualifier, please use 'qualifier:' instead
C4995 1 'function': name was marked as #pragma deprecated
C4996 1 'function' was declared deprecated
C4997 1 'class': coclass does not implement a COM interface or pseudo-interface
C4998 1 EXPECTATION FAILED: source file(line number)