Geoff Chappell - Software Analyst
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) |