Skip to content

Latest commit

 

History

History
1604 lines (1573 loc) · 195 KB

File metadata and controls

1604 lines (1573 loc) · 195 KB

cpp-warn-table

c++ warning correspondence table (Clang/GCC and Visual Studio)

VS C4000-C4199

Summary Visual Studio GCC Clang Clang message is Same
UNKNOWN WARNING C4000 - -
too many actual parameters for macro /W1 C4002 error error too many arguments provided to function-like macro invocation
not enough actual parameters for macro /W1 C4003 error error too few arguments provided to function-like macro invocation
macro redefinition /W1 C4005 warning -Wmacro-redefined 'IDENTIFIER' macro redefined ☑️
#undef expected an identifier /W1 C4006 error error macro name missing
'function' : must be 'attribute' /W2 C4007 - - -
'identifier' : 'attribute' attribute ignored /W2,3 C4008 error error 'main' is not allowed to be declared inline
single-line comment contains line-continuation character /W1 C4010 -Wcomment -Wcomment multi-line // comment ☑️
'function' undefined; assuming extern returning int /W3 C4013
'identifier' : type of bit field must be integral /W1 C4015 error C2150 error error bit-field 'IDENTIFIER' has non-integral type 'TYPE'
'expression' : signed/unsigned mismatch /W3 C4018 -Wsign-compare -Wsign-compare comparison of integers of different signs: 'unsigned TYPE' and 'TYPE' ☑️
empty statement at global scope /W4 C4019 - -Wextra-semi-stmt empty expression statement has no effect; remove unnecessary ';' to silence this warning ☑️
'function' : too many actual parameters /W1 C4020 error C2660 error error
'function' : pointer mismatch for actual parameter 'number' /W1 C4022
'symbol' : based pointer passed to unprototyped function : parameter number /W3 C4023
'function' : different types for formal and actual parameter 'number' /W1 C4024
'number' : based pointer passed to function with variable arguments: parameter number /W1 C4025
function declared with formal parameter list /W1 C4026
function declared without formal parameter list /W1 C4027
formal parameter 'number' different from declaration /W1 C4028 - -
declared formal parameter list different from definition /W1 C4029
first formal parameter list longer than the second list /W1 C4030
second formal parameter list longer than the first list /W1 C4031
formal parameter 'number' has different type when promoted /W4 C4032 - -
'function' must return a value /W1 C4033 error error non-void function 'test_1' should return a value
sizeof returns 0 /W1 C4034
'function': no return value /W3 C4035
unnamed 'type' as actual parameter /W1 C4036 - -
'modifier' : illegal ambient class modifier /W1 C4038 - -
compiler limit : terminating browser output /W1 C4041 - -
'identifier' : has bad storage class /W1 C4042 - -
'array' : array bounds overflow /W1 C4045
'operator' : 'identifier1' differs in levels of indirection from 'identifier2' /W1 C4047 error C2440 error error
different declared array subscripts : 'identifier1' and 'identifier2' /W1 C4048
compiler limit : terminating line number emission /W1 C4049
type conversion; possible loss of data /W2 C4051
function declarations different; one contains variable arguments /W1 C4052
one void operand for '?:' /W4 C4053
'conversion' : from data pointer 'type1' to function pointer 'type2' /W1 C4055 Obsolete VS2017 - -
overflow in floating point constant arithmetic /W2 C4056 ??
'operator' : 'identifier1' indirection to slightly different base types from 'identifier2' /W4 C4057 C-Only
switch statement contains no 'case' or 'default' labels C4060 NOWARN NOWARN
case 'identifier' is not a valid value for switch of enum 'enumeration' C4063 -Wswitch -Wswitch case value not in enumerated type 'Hoge' ☑️
switch of incomplete enum 'enumeration' C4064 error error
switch statement contains 'default' but no 'case' labels C4065 NOWARN NOWARN
enumerator 'identifier' in switch of enum 'enumeration' is not explicitly handled by a case label /W4 C4061 Off -Wswitch-enum -Wswitch-enum enumeration value 'NAME' not explicitly handled in switch ☑️
enumerator 'identifier' in switch of enum 'enumeration' is not handled /W4 C4062 Off -Wswitch -Wswitch enumeration value 'NAME' not handled in switch ☑️
characters beyond first in wide-character constant ignored /W3 C4066
unexpected tokens following preprocessor directive - expected a newline /W1 C4067 error,warning,-Wendif-labels error, -Wextra-tokens extra tokens at end of TOKEN directive ☑️
unknown pragma /W1 C4068 -Wunknown-pragmas -Wunknown-pragmas unknown pragma ignored ☑️
long double is the same precision as double C4069
initializers put in library initialization area /W3 C4073 -Wunknown-pragmas -Wunknown-pragmas
initializers put in compiler reserved initialization area /W1 C4074 -Wunknown-pragmas -Wunknown-pragmas
initializers put in unrecognized initialization area /W1 C4075 -Wunknown-pragmas -Wunknown-pragmas
'type modifier' : can not be used with type 'typename' /W1 C4076 error error
unknown check_stack option /W1 C4077 -Wunknown-pragmas -Wunknown-pragmas
unexpected token 'token' /W1 C4079 -Wpragma -Wignored-pragmas
expected identifier for segment name; found 'symbol' /W1 C4080 -Wunknown-pragmas -Wunknown-pragmas
expected 'token1'; found 'token2' /W1 C4081 -Wunknown-pragmas -Wunknown-pragmas
expected 'token'; found identifier 'identifier' /W1 C4083 -Wunknown-pragmas -Wunknown-pragmas
expected pragma parameter to be 'on' or 'off' /W1 C4085 -Wunknown-pragmas -Wunknown-pragmas
expected pragma parameter to be '1', '2', '4', '8', or '16' /W1 C4086 -Wpragma -Wignored-pragmas
'function' : declared with 'void' parameter list /W1 C4087 error C2660 error error
'function' : pointer mismatch in actual parameter 'number', formal parameter 'number' /W1 C4088
'function' : different types in actual parameter 'number', formal parameter 'number' /W1 C4089
'operation' : different 'modifier' qualifiers /W1 C4090 C-Only
'keyword' : ignored on left of 'type' when no variable is declared /W1 C4091 error error
sizeof returns 'unsigned long' /W4 C4092
untagged 'token' declared no symbols /W2 C4094 error error
'a': interface is not a COM interface; will not be emitted to IDL /W1 C4096 - -
expected pragma parameter to be 'restore' or 'off' /W1 C4097 -Wunknown-pragmas -Wunknown-pragmas
'function' : void function returning a value /W1 C4098
'identifier' : type name first seen using 'objecttype1' now seen using 'objecttype2' /W2 C4099 NOWARN -Wmismatched-tags '?IDENTIFIER_' defined as a class here but previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI ☑️
'identifier' : unreferenced formal parameter /W4 C4100 -Wunused-parameter -Wunused-parameter unused parameter 'IDENTIFIER' ☑️
'identifier' : unreferenced local variable /W3 C4101 -Wunused-variable -Wunused-variable unused variable 'IDENTIFIER' ☑️
'label' : unreferenced label /W3 C4102 -Wunused-label -Wunused-label unused label 'LABEL' ☑️
'filename' : alignment changed after including header, may be due to missing #pragma pack(pop) /W1 C4103 NOWARN -Wpragma-pack unterminated '#pragma pack (push, ...)' at end of file ☑️
unexpected identifier 'identifier' /W1 C4109 -Wunknown-pragmas -Wunknown-pragmas
#line requires an integer between 1 and number /W1,4 C4112 -pedantic -pedantic (-Wgnu-zero-line-directive) #line directive with zero argument is a GNU extension ☑️
'identifier1' differs in parameter lists from 'identifier2' /W1 C4113
same type qualifier used more than once /W1 C4114 error -Wduplicate-decl-specifier duplicate 'volatile' declaration specifier ☑️
'type' : named type definition in parentheses /W1,4 C4115
unnamed type definition in parentheses /W1 C4116
macro name 'name' is reserved; 'Command' ignored /W1 C4117 -Wbuiltin-macro-redefined -Wbuiltin-macro-redefined redefining builtin macro ☑️
different bases 'base1' and 'base2' specified /W1 C4119
based/unbased mismatch /W1 C4120
'symbol' : alignment of a member was sensitive to packing /W4 C4121 NOWARN NOWARN
'function' : alloc_text applicable only to functions with C linkage /W1 C4122
different base expressions specified C4123
__fastcall with stack checking is inefficient /W1 C4124 - -
decimal digit terminates octal escape sequence /W4 C4125 NOWARN NOWARN
conditional expression is constant /W4 C4127 NOWARN NOWARN
'character' : unrecognized character escape sequence /W1 C4129 warning -Wunknown-escape-sequence unknown escape sequence '/' ☑️
'operator' : logical operation on address of string constant /W4 C4130 -Waddress -Wstring-compare result of comparison against a string literal is unspecified (use an explicit string comparison function instead) ☑️
'function' : uses old-style declarator /W4 C4131 C-Only
'object' : const object should be initialized /W4 C4132 C-Only
'type' : incompatible types - from 'type1' to 'type2' /W3 C4133
'function': no return value from floating-point function C4137
'*/' found outside of comment /W1 C4138 NOWARN NOWARN
'modifier' : used more than once /W1 C4141 error -Wduplicate-decl-specifier duplicate 'inline' declaration specifier ☑️
benign redefinition of type /W1 C4142 C-Only
pragma 'same_seg' not supported; use __based allocation /W1 C4143 - -
'expression' : relational expression as switch expression /W1 C4144 NOWARN -Wswitch-bool switch condition has boolean value ☑️
'expression1' : relational expression as switch expression; possible confusion with 'expression2' /W1 C4145 NOWARN -Wswitch-bool switch condition has boolean value ☑️
unary minus operator applied to unsigned type, result still unsigned /W2 C4146 NOWARN NOWARN
deletion of pointer to incomplete type 'type'; no destructor called /W2 C4150 -Wdelete-incomplete -Wdelete-incomplete deleting pointer to incomplete type 'IncClass' may cause undefined behavior ☑️
non standard extension, function/data ptr conversion in expression /W4 C4152 - -
function/data pointer conversion in expression /W1 C4153 - -
deletion of an array expression; conversion to pointer supplied /W1 C4154 warning error
deletion of an array expression without using the array form of 'delete' /W1 C4155 NOWARN warning 'delete' applied to a pointer-to-array type 'int (*)[10]' treated as 'delete[]'
deletion of an array expression without using the array form of 'delete'; array form substituted /W2 C4156 NOWARN warning 'delete' applied to a pointer-to-array type 'int (*)[10]' treated as 'delete[]'
pragma was ignored by C compiler /W1 C4157 - -
assuming #pragma pointers_to_members(full_generality, inheritance) /W1 C4158 - -
#pragma pragma(pop,...) : has popped previously pushed identifier 'identifier' /W3 C4159 - -
#pragma (pop,...) : did not find previously pushed identifier 'identifier' /W1 C4160 - -
#pragma pragma(pop...) : more pops than pushes /W3 C4161 - -
'identifier' : no function with C linkage found /W1 C4162 - -
'identifier' : not available as an intrinsic function /W1 C4163 - -
'identifier' : intrinsic function not declared /W1 C4164 - -
'HRESULT' is being converted to 'bool'; are you sure this is what you want? /W1 C4165 - -
illegal calling convention for constructor/destructor /W1 C4166 - -
function : only available as an intrinsic function /W1 C4167 - -
compiler limit : out of debugger types, delete program database 'database' and rebuild /W1 C4168 - -
returning address of local variable or temporary /W1 C4172 -Wreturn-local-addr -Wreturn-stack-address returning reference to local temporary object ☑️
'name' : not available as a #pragma component /W1 C4174 - -
#pragma component(browser, on) : browser info must initially be specified on the command line /W1 C4175 - -
'subcomponent' : unknown subcomponent for #pragma component browser /W1 C4176 - -
#pragma pragma should be at global scope /W1 C4177 - -
case constant 'constant' too big for the type of the switch expression /W1 C4178 error -Wnarrowing error -Wc++11-narrowing (-Wswitch -std=c++98) case value evaluates to VALUE, which cannot be narrowed to type 'int' ☑️
'//' : parsed as '/' and '/': confusion with standard '//' comments /W1 C4179
qualifier applied to function type has no meaning; ignored /W1 C4180 NOWARN -Wignored-qualifiers 'NAME' qualifier on function type 'IDENTIFIER' (aka 'SIG') has no effect ☑️
qualifier applied to reference type; ignored C4181
#include nesting level is 'number' deep; possible infinite recursion /W1 C4182 error error
'identifier': missing return type; assumed to be a member function returning 'int' /W1 C4183 error C2334 error error
ignoring unknown #import attribute 'attribute' /W1 C4185 - -
#import attribute 'attribute' requires count arguments; ignored /W1 C4186 - -
#import attributes 'attribute1' and 'attribute2' are incompatible; both ignored /W1 C4187 - -
constant expression is not integral C4188 - -
'identifier' : local variable is initialized but not referenced /W4 C4189 -Wunused-variable -Wunused-variable unused variable 'NAME' ☑️
'identifier1' has C-linkage specified, but returns UDT 'identifier2' which is incompatible with C /W1 C4190 NOWARN -Wreturn-type-c-linkage 'func' has C-linkage specified, but returns user-defined type 'X' which is incompatible with C ☑️
'operator/operation' : unsafe conversion from 'type of expression' to 'type required' /W3 C4191 - -
automatically excluding 'name' while importing type library 'library' /W3 C4192 - -
#pragma warning(pop): no matching '#pragma warning(push)' C4193 - -
#pragma start_map_region cannot be nested; ignored C4194 - -
#pragma stop_map_region used without matching #pragma start_map_region; ignored C4195 - -
expected '%$L' or '%$L'; found '%$L' C4196 - -
'type' : top-level volatile in cast is ignored /W3 C4197 -Wignored-qualifiers NOWARN ☑️

VS C4200-C4399

Summary Visual Studio GCC Clang Clang message is Same
nonstandard extension used : zero-sized array in struct/union /W2,4 C4200 -Wpedantic -pedantic (-Wzero-length-array) zero size arrays are an extension ☑️
nonstandard extension used : nameless struct/union /W4 C4201 -Wpedantic -pedantic (-Wgnu-anonymous-struct) anonymous structs are a GNU extension ☑️
nonstandard extension used : '...': prototype parameter in name list illegal /W4 C4202 error error
nonstandard extension used : non-constant aggregate initializer /W4 C4203 NOWARN NOWARN
nonstandard extension used : static function declaration in function scope /W4 C4205
nonstandard extension used : translation unit is empty /W4 C4206
nonstandard extension used : extended initializer form /W4 C4207
nonstandard extension used : delete [exp] - exp evaluated but ignored /W4 C4208 error error
nonstandard extension used : function given file scope /W4 C4210 error error
nonstandard extension used : redefined extern to static /W4 C4211 error error
nonstandard extension used : function declaration used ellipsis /W4 C4212 NOWARN NOWARN
nonstandard extension used : cast on l-value /W4 C4213 error error
nonstandard extension used : bit field types other than int /W4 C4214 C-Only - -
nonstandard extension used : long float /W1 C4215 error error 'long float' is invalid
nonstandard extension used : float long /W1 C4216 error error 'long float' is invalid
nonstandard extension used : must specify at least a storage class or a type /W1 C4218 C-Only
varargs matches remaining parameters /W4 C4220 C-Only
nonstandard extension used : 'identifier' : cannot be initialized using address of automatic variable /W4 C4221 C-Only
nonstandard extension used : non-lvalue array converted to pointer /W1,4 C4223
nonstandard extension used : formal parameter 'identifier' was previously defined as a type /W1 C4224 NOWARN NOWARN
nonstandard extension used : 'keyword' is an obsolete keyword /W1 C4226 - -
anachronism used : qualifiers on reference are ignored /W1 C4227 error error
nonstandard extension used : qualifiers after comma in declarator list are ignored /W1 C4228 error error
anachronism used : modifiers on data are ignored /W1 C4229 - -
anachronism used : modifiers/qualifiers interspersed; qualifier ignored /W1 C4230 - -
nonstandard extension used : 'identifier' : address of dllimport 'dllimport' is not static, identity not guaranteed /W4 C4232 - -
nonstandard extension used : 'keyword' keyword only supported in C++, not C /W4 C4233
nonstandard extension used: 'keyword' keyword reserved for future use /W4 C4234
nonstandard extension used : 'keyword' keyword not supported on this architecture /W4 C4235
'keyword' keyword is not yet supported, but reserved for future use /W1 C4237 error C2059 error error
nonstandard extension used : class rvalue used as lvalue /W4 C4238 error -fpermissive error -Waddress-of-temporary taking the address of a temporary object of type 'C'
nonstandard extension used : 'token' : conversion from 'type' to 'type' /W4 C4239 error error
nonstandard extension used : access to 'classname' now defined to be 'access specifier', previously it was defined to be 'access specifier' /W3 C4240 error error 'NAME' redeclared with 'public' access
'identifier' : conversion from 'type1' to 'type2', possible loss of data /W4 C4242 -Wconversion -Wimplicit-int-conversion implicit conversion loses integer precision: 'TYPE' to 'TYPE' ☑️
'conversion type' conversion exists from 'type1' to 'type2', but is inaccessible /W3 C4243 NOWARN NOWARN
'argument' : conversion from 'type1' to 'type2', possible loss of data /W2 C4244 -Wfloat-conversion -Wfloat-conversion prog.cc:8:14: warning: implicit conversion turns floating-point number into integer: 'TYPE' to 'TYPE' ☑️
'conversion' conversion from 'type1' to 'type2', possible loss of data /W3,4 C4244 -Wconversion -Wconversion ☑️
'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch /W4 C4245 -Wsign-conversion -Wsign-conversion implicit conversion changes signedness: 'TYPE' to 'TYPE' ☑️
'class1' : inherits 'class2::member' via dominance /W2 C4250 NOWARN NOWARN
'type' : class 'type1' needs to have dll-interface to be used by clients of class 'type2' /W1 C4251 - -
'operator' : conversion from 'type1' to 'type2', possible loss of data /W4 C4254 NOWARN NOWARN
'function' : no function prototype given: converting '()' to '(void)' /W4 C4255 C-Only - -
'function' : constructor for class with virtual bases has '...'; calls may not be compatible with older versions of Visual C++ /W4 C4256 - -
'variable' : definition from the for loop is ignored; the definition from the enclosing scope is used" /W1 C4258 NOWARN NOWARN
'function' : member function does not override any base class virtual member function /W4 C4263 -Woverloaded-virtual -Woverloaded-virtual 'FUNCTION' hides overloaded virtual function ☑️
'virtual_function' : no override available for virtual member function from base 'class'; function is hidden /W1 C4264
class' : class has virtual functions, but destructor is not virtual /W3 C4265 -Wnon-virtual-dtor -Wnon-virtual-dtor 'CLASS_' has virtual functions but non-virtual destructor ☑️
'function' : no override available for virtual member function from base 'type'; function is hidden /W4 C4266
'var' : conversion from 'size_t' to 'type', possible loss of data /W3 C4267 -Wconversion -Wshorten-64-to-32 implicit conversion loses integer precision: 'TYPE' (aka 'TYPE') to 'TYPE' ☑️
'identifier' : 'const' static/global data initialized with compiler generated default constructor fills the object with zeros /W4 C4268 error -fpermissive error
'identifier' : 'const' automatic data initialized with compiler generated default constructor produces unreliable results /W1 C4269 error -fpermissive error
'function' : is marked __declspec(dllimport); must specify native calling convention when importing a function. /W1 C4272 - -
'function' : inconsistent DLL linkage /W1 C4273 - -
#ident ignored; see documentation for #pragma comment(exestr, 'string') /W1 C4274 - -
non - DLL-interface class 'class_1' used as base for DLL-interface class 'class_2' /W2 C4275 - -
'function' : no prototype provided; assumed no parameters /W1 C4276
imported item 'classname::member' exists as both data member and function member; data member ignored /W1 C4277 - -
'identifier': identifier in type library 'tlb' is already a macro; use the 'rename' qualifier /W3 C4278 - -
'identifier': identifier in type library 'library' is a keyword; use the 'rename' qualifier /W3 C4279
'operator ->' was self recursive through type 'type' /W3 C4280 error error
'operator ->' recursion occurred through type 'type' /W3 C4281 error error
then through type 'type' /W3 C4282
and through type 'type' /W3 C4283
return type for 'identifier::operator ->' is recursive if applied using infix notation /W2 C4285 NOWARN NOWARN
'type1' : is caught by base class ('type2') on line number /W1 C4286 warning -Wexceptions exception of type 'D' will be caught by earlier handler ☑️
'operator' : unsigned/negative constant mismatch /W3 C4287 -Wsign-compare -Wsign-compare comparison of integers of different signs: 'TYPE' and 'TYPE' ☑️
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 /W1 C4288 -Wunreachable-code -Wunreachable-code ☑️
nonstandard extension used : 'var' : loop control variable declared in the for-loop is used outside the for-loop scope /W4 C4289 - -
C++ exception specification ignored except to indicate a function is not __declspec(nothrow) /W3 C4290 - -
'declaration' : no matching operator delete found; memory will not be freed if initialization throws an exception /W1 C4291 NOWARN NOWARN
'operator' : shift count negative or too big, undefined behavior /W1 C4293 -Wshift-count-overflow -Wshift-count-overflow shift count >= width of type ☑️
'array' : array is too small to include a terminating null character /W4 C4295 C-Only - -
'operator' : expression is always false /W4 C4296 -Wtype-limits -Wtautological-unsigned-zero-compare result of comparison of unsigned expression < 0 is always false ☑️
'function' : function assumed not to throw an exception but does /W1 C4297 - -
'identifier': identifier in type library 'library' is already a macro; renaming to '__identifier' /W4 C4298
'identifier': identifier in type library 'library' is a keyword; renaming to '__identifier' /W4 C4299
'derived_class::function': overriding virtual function only differs from 'base_class::function' by const/volatile qualifier C4301
'conversion' : truncation from 'type 1' to 'type 2' /W2 C4302 error -fpermissive error
C-style cast from 'type1' to 'type2' is deprecated, use static_cast, __try_cast or dynamic_cast C4303 -Wold-style-cast -Wold-style-cast use of old-style cast ☑️
'context' : truncation from 'type1' to 'type2' /W1 C4305 -Wfloat-conversion -Wimplicit-float-conversion implicit conversion loses floating-point precision: 'double' to 'float' ☑️
'identifier' : conversion from 'type1' to 'type2' of greater size /W3 C4306
'operator' : integral constant overflow /W2 C4307 -Woverflow -Winteger-overflow overflow in expression; result is - XXX with type 'TYPE'
negative integral constant converted to unsigned type /W2 C4308 -Wsign-conversion -Wsign-conversion implicit conversion changes signedness: 'TYPE' to 'TYPE' ☑️
'conversion' : truncation of constant value /W2 C4309 -Wconversion -Wconstant-conversion implicit conversion from 'TYPE' to 'TYPE' changes value from VALUE to - VALUE ☑️
cast truncates constant value /W3 C4310 NOWARN NOWARN
'variable' : pointer truncation from 'type' to 'type' /W1 C4311 error -fpermissive error
'operation' : conversion from 'type1' to 'type2' of greater size /W1 C4312 -Wint-to-pointer-cast -Wint-to-void-pointer-cast cast to 'void *' from smaller integer type 'int' ☑️
'function' : 'format specifier' in format string conflicts with argument number of type 'type' /W1 C4313 -Wformat -Wformat format specifies type 'TYPE' but the argument has type 'TYPE' ☑️
expected pragma parameter to be '32' or '64' C4314 - -
'classname': 'this' pointer for member 'member' may not be aligned 'alignment' as expected by the constructor /W4 C4315
Object allocated on the heap may not be aligned for this type. /W3 C4316 - -
'printf_family' : not enough arguments passed for format string /W1 C4317 -Wformat-extra-args -Wformat-extra-args data argument not used by format string ☑️
passing constant zero as the length to memset C4318 -Wmemset-transposed-args -Wmemset-transposed-args 'size' argument to memset is '0'; did you mean to transpose the last two arguments? ☑️
'~' : zero extending 'type1' to 'type2' of greater size /W1 C4319 NOWARN NOWARN
automatically generating an IID for interface 'interface' /W1 C4321 - -
automatically generating a CLSID for class 'class' /W1 C4322 - -
re-using registered CLSID for class 'class' /W1 C4323 - -
'struct_name' : structure was padded due to __declspec(align()) /W4 C4324 - -
attributes for standard section 'section' ignored /W1 C4325 - -
return type of 'function' should be 'type1' instead of 'type2' /W1 C4326 error error
'assignment': indirection alignment of LHS ('alignment1') is greater than RHS ('alignment2') C4327
'function': indirection alignment of formal parameter parameter_number (parameter_alignment) is greater than the actual argument alignment (argument_alignment) C4328
__declspec(align()) is ignored on enum /W1 C4329 - -
attribute 'attribute' for section 'section' ignored /W1 C4330
'operator' : right shift by too large amount, data loss /W1 C4333 NOWARN NOWARN
'operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) /W3 C4334 NOWARN NOWARN
Mac file format detected: please convert the source file to either DOS or UNIX format C4335
import cross-referenced type library 'type_lib1' before importing 'type_lib2' /W4 C4336 - -
cross-referenced type library 'typelib1' in 'typelib2' is being automatically imported /W4 C4337 - -
#pragma directive: standard section 'section' is used /W4 C4338 - -
'type' : use of undefined type detected in WinRT or CLR meta-data - use of this type may lead to a runtime exception /W4 C4339 clr - -
'value' : value wrapped from positive to negative value /W1 C4340
behavior change: 'function' called, but a member operator was called in previous versions /W1 C4342 NOWARN NOWARN
#pragma optimize("g",off) overrides /Og option /W4 C4343 - -
behavior change: use of explicit template arguments results in call to 'function'
'name' : dependent name is not a type /W1 C4346 error error
'type' : redefinition of default parameter : parameter number /W1 C4348 error error
behavior change: 'member1' called instead of 'member2' /W1 C4350 NOWARN NOWARN
'identifier': intrinsic function already defined /W1 C4352
nonstandard extension used: constant 0 as function expression. Use '__noop' function intrinsic instead /W1 C4353 NOWARN NOWARN
'this' : used in base member initializer list C4355 NOWARN NOWARN
'member' : static data member cannot be initialized via derived class /W2 C4356 error -fpermissive error
param array argument in formal argument list for delegate 'del' ignored when generating 'function' /W3 C4357 - -
'operator': return type of combined delegates is not 'void'; returned value is undefined /W1 C4358 - -
'type': actual alignment (8) is greater than the value specified in __declspec(align()) /W3 C4359 - -
'type': alignment greater than 8 bytes is not supported by CLR /W2 C4362 clr - -
#using for assembly 'file' previously seen at location(line_number) without as_friend attribute; as_friend not applied /W1 C4364 - -
'action' : conversion from 'type_1' to 'type_2', signed/unsigned mismatch /W4 C4365 -Wsign-conversion -Wsign-conversion implicit conversion changes signedness: 'TYPE' to 'TYPE' ☑️
The result of the unary 'operator' operator may be unaligned /W4 C4366
Conversion from 'type1' to 'type2' may cause datatype misalignment exception /W3 C4367
cannot define 'member' as a member of managed 'type': mixed types are not supported C4368 clr - -
'enumerator' : enumerator value 'value' cannot be represented as 'type', value is 'new_value' /W1 C4369 error error enumerator value 128 is not representable in the underlying type 'char'
'classname': layout of class has changed from a previous version of the compiler due to better packing C4370
'classname': layout of class may have changed from a previous version of the compiler due to better packing of member 'member' /W3 C4371
'function': virtual function overrides 'base_function', previous versions of the compiler did not override when parameters only differed by const/volatile qualifiers /W3 C4373 - -
'function1': interface method will not be implemented by non-virtual method 'function2' /W1 C4374 - -
non-public method 'method2' does not override 'method1' /W1 C4375
access specifier 'old_specifier:' is no longer supported: please use 'new_specifier:' instead - -
native types are private by default; -d1PrivateNativeTypes is deprecated /W1 C4377
Must obtain function pointers to run initializers; consider System::ModuleHandle::ResolveMethodHandle /W1 C4378 clr - -
Version version of the common language runtime is not supported by this compiler. Using this version may cause unexpected results. /W1 C4379
'class': A default constructor cannot be deprecated /W1 C4380, error
'function1': interface method will not be implemented by non-public method 'function2' /W1 C4381
throwing 'type' : a type with __clrcall destructor or copy constructor can only be caught in /clr:pure module /W1 C4382 clr
'instance_dereference_operator' : the meaning of dereferencing a handle can change, when a user-defined 'operator' operator exists; write the operator as a static function to be explicit about the operand /W1 C4383 clr - -
#pragma 'make_public' should only be used at global scope /W1 C4384
alternative': was considered /W3 C4387
'expression': signed/unsigned mismatch /W4 C4388 -Wsign-compare -Wsign-compare comparison of integers of different signs: 'int' and 'unsigned int' ☑️
'operator' : signed/unsigned mismatch /W4 C4389 -Wsign-compare -Wsign-compare comparison of integers of different signs: 'int' and 'unsigned int' ☑️
';' : empty controlled statement found; is this the intent? /W3 C4390 -Wempty-body -Wempty-body if statement has empty body ☑️
'signature' : incorrect return type for intrinsic function, expected 'type' /W1 C4391 - -
'signature' : incorrect number of arguments for intrinsic function, expected 'number' arguments /W1 C4392 - -
'var' : const has no effect on literal data member; ignored /W1 C4393 - -
'function' : per-appdomain symbol should not be marked with __declspec(dllexport) C4394 - -
'function' : member function will be invoked on a copy of the initonly data member 'member' /W1 C4395 clr - -
"name" : the inline specifier cannot be used when a friend declaration refers to a specialization of a function template /W2 C4396 error NOWARN
DefaultCharSetAttribute is ignored /W1 C4397 clr - -
'variable' : per-process global object might not work correctly with multiple appdomains; consider using __declspec(appdomain) /W3 C4398 - -
'symbol' : per-process symbol should not be marked with __declspec(dllimport) when compiled with /clr:pure /W1 C4399 clr - -

VS C4400-C4599

Summary Visual Studio GCC Clang Clang message is Same
'type' : const/volatile qualifiers on this type are not supported /W4 C4400
'bitfield' : member is bit field /W1 C4401
must use PTR operator /W1 C4402
illegal PTR operator /W1 C4403
period on directive ignored /W3 C4404
'identifier' : identifier is reserved word /W1 C4405
operand on directive ignored /W1 C4406 NOWARN NOWARN
cast between different pointer to member representations, compiler may generate incorrect code /W1 C4407
anonymousstruct or union did not declare any data members /W4 C4408 warning -Wmissing-declarations declaration does not declare anything ☑️
¥illegal instruction size /W1 C4409
illegal size for operand /W1 C4410
'identifier' : symbol resolves to displacement register /W1 C4411
'function' : function signature contains type 'type'; C++ objects are unsafe to pass between pure code and mixed or native. /W2 C4412 - -
'classname::member': reference member is initialized to a temporary that doesn't persist after the constructor exits C4413
'function' : short jump to function converted to near /W3 C4414 - -
duplicate __declspec(code_seg('name')) /W1 C4416 - -
__declspec(code_seg(...)) contains empty string: ignored /W1 C4416 - -
an explicit template instantiation cannot have __declspec(code_seg(...)): ignored /W1 C4417 - -
__declspec(code_seg(...)) ignored on an enum /W1 C4418 - -
'symbol' has no effect when applied to private ref class 'class'. /W3 C4419 - -
'parameter': a reference parameter on a resumable function is potentially unsafe /W3 C4421
std::bad_alloc': will be caught by class ('type') on line number /W3 C4423
A SAL annotation cannot be applied to '...' /W1 C4425 - -
'operator': overflow in constant division, undefined behavior /W1 C4427 wip wip
optimization flags changed after including header, may be due to #pragma optimize() /W1 C4426 - -
catch for 'type1' preceded by 'type2' on line number; unpredictable behavior may result if 'std::bad_alloc' is thrown /W3 C4424
'operator' : operator not available, using 'operator' instead; run-time checking may be compromised /W1 C4420
possible incomplete or improperly formed universal-character-name /W4 C4429 error -Wunicode \u used with no following hex digits; treating as '' followed by identifier ☑️
missing type specifier - int assumed. Note: C++ does not support default-int error C4430 error error
missing type specifier - int assumed. Note: C no longer supports default-int /W4 C4431 C-Only - -
a class constructor must have private accessibility; changing to private access /W4 C4334 clr - -
'class1' : Object layout under /vd2 will change due to virtual base 'class2' /W4 C4435 - -
dynamic_cast from virtual base 'class1' to 'class2' in constructor or destructor could fail with partially-constructed object Compile with /vd2 or define 'class2' with #pragma vtordisp(2) in effect /W1 C4436 - -
dynamic_cast from virtual base 'class1' to 'class2' could fail in some contexts Compile with /vd2 or define 'class2' with #pragma vtordisp(2) in effect /W4 C4437 - -
'function': cannot be called safely in /await:clrcompat mode. If 'function' calls into the CLR it may result in CLR head corruption C4438 - -
'function' : function definition with a managed type in the signature must have a __clrcall calling convention C4439 clr - -
calling convention redefinition from 'calling_convention1' to 'calling_convention2' ignored /W1 C4440 clr - -
calling convention of 'cc1' ignored; 'cc2' used instead /W1 C4441 clr - -
embedded null terminator in __annotation argument. Value will be truncated. /W1 C4442
expected pragma parameter to be '0', '1', or '2' /W1 C4443
identifier': top level '__unaligned' is not implemented in this context /W3 C4444
'function' : in a WinRT or managed type a virtual method cannot be private /W1 C4445
'type': cannot map member 'name1' into this type, due to conflict with the type name. The method was renamed to 'name2' /W1 C4446
'main' signature found without threading model. Consider using 'int main(Platform::ArrayPlatform::String^^ args)'. /W1 C4447 - -
'type1' does not have a default interface specified in metadata. Picking: 'type2', which may fail at runtime. C4448
'type' an unsealed type should be marked as '[WebHostHidden]' C4449 - -
'type1' should be marked as '[WebHostHidden]' because it derives from 'type2' C4450 - -
'classname1::member': Usage of ref class 'classname2::member' inside this context can lead to invalid marshaling of object across contexts /W4 C4451
'identifier': public type cannot be at global scope. It must be in a namespace that is a child of the name of the output .winmd file. /W1 C4452 - -
'type': A '[WebHostHidden]' type should not be used on the published surface of a public type that is not '[WebHostHidden]' /W1 C4453 - -
'function' is overloaded by more than the number of input parameters without having [DefaultOverload] specified. Picking 'declaration' as the default overload /W1 C4454 - -
'operator operator': literal suffix identifiers that do not start with an underscore are reserved /W1 C4455 wip wip
declaration of 'identifier' hides previous local declaration /W4 C4456 -Wshadow -Wshadow declaration shadows a local variable ☑️
declaration of 'identifier' hides function parameter /W4 C4457 -Wshadow -Wshadow declaration shadows a local variable ☑️
declaration of 'identifier' hides class member /W4 C4458 -Wshadow -Wshadow declaration shadows a local variable ☑️
declaration of 'identifier' hides global declaration /W4 C4459 -Wshadow -Wshadow declaration shadows a local variable ☑️
WinRT or CLR operator 'operator', has parameter passed by reference. WinRT or CLR operator 'operator' has different semantics from C++ operator 'operator', did you intend to pass by value? /W4 C4460 clr - -
'type' : this class has a finalizer 'finalizer' but no destructor 'dtor' /W1 C4461 clr - -
cannot determine the GUID of the type. Program may fail at runtime. /W1 C4462 - -
overflow; assigning value to bit-field that can only hold values from low_value to high_value /W4 C4463 NOWARN -Wbitfield-constant-conversion implicit truncation from 'int' to bit-field changes value from VALUE to VALUE ☑️
relative include path contains '..' /W4 C4464 NOWARN NOWARN
floating-point control pragmas ignored under /clr /W1 C4470 clr - -
'enumeration': a forward declaration of an unscoped enumeration must have an underlying type (int assumed) /W4 C4471 error error
'identifier' is a native enum: add an access specifier (private/public) to declare a 'WinRT|managed' enum /W1 C4472 - -
'function' : not enough arguments passed for format string placeholders and their parameters expect number variadic arguments, but number were provided the missing variadic argument index is required by format string 'format_string' this argument is used by a conversion specifier this argument is used as a field width /W1 C4473 -Wformat -Wformat more '%' conversions than data arguments ☑️
'function' : too many arguments passed for format string /W3 C4474 -Wformat-extra-args -Wformat-extra-args fdata argument not used by format string ☑️
'function' : length modifier 'modifier' cannot be used with type field character 'character' in format specifier /W3 C4475 -Wformat -Wformat length modifier 'h' results in undefined behavior or no effect with 'f' conversion specifier ☑️
'function' : unknown type field character 'character' in format specifier /W3 C4476 -Wformat -Wformat format specifies type 'TYPE' but the argument has type 'TYPE' ☑️
'function' : format string 'string' requires an argument of type 'type', but variadic argument number has type 'type' /W1 C4477 -Wformat -Wformat format specifies type 'TYPE' but the argument has type 'TYPE' ☑️
'function' : positional and non-positional placeholders cannot be mixed in the same format string /W1 C4478 - -
nonstandard extension used: specifying underlying type for enum 'enumeration' error C4480
nonstandard extension used: override specifier 'keyword' /W4 C4481 - -
nonstandard extension used: enum 'enumeration' used in qualified name C4482
syntax error: expected C++ keyword /W1 C4483, error
'override_function' : matches base ref class method 'base_class_function', but is not marked 'virtual', 'new' or 'override'; 'new' (and not 'virtual') is assumed C4484 - -
'override_function' : matches base ref class method 'base_class_function ', but is not marked 'new' or 'override'; 'new' (and 'virtual') is assumed C4485 clr - -
'function' : a private virtual method of a ref class or value class should be marked 'sealed' /W1 C4486 - -
'derived_class_function' : matches inherited non-virtual method 'base_class_function' but is not explicitly marked 'new' /W4 C4487 clr - -
'function' : requires 'keyword' keyword to implement the interface method 'interface_method' /W1 C4488 clr - -
'specifier' : not allowed on interface method 'method'; override specifiers are only allowed on ref class and value class methods /W1 C4489 clr - -
'override' : incorrect use of override specifier; 'function' does not match a base ref class method /W1 C4490 clr - -
'name': has an illegal IDL version format /W1 C4491 - -
'function1': matches base ref class method 'function2', but is not marked 'override' /W1 C4492, error - -
delete expression has no effect as the destructor of 'type' does not have 'public' accessibility /W1 C4493, error - -
'function' : Ignoring __declspec(allocator) because the function return type is not a pointer or reference /W1 C4494 - -
nonstandard extension '__super' used: replace with explicit base class name C4495 - -
nonstandard extension 'for each' used: replace with ranged-for statement C4496 - -
nonstandard extension 'sealed' used: replace with 'final' C4497 - -
nonstandard extension used: 'extension' C4498 - -
'function' : an explicit specialization cannot have a storage class (ignored)" /W4 C4499 wip wip
'linkage specification' requires use of keyword 'extern' and must precede all other specifiers /W1 C4502
'identifier' : decorated name length exceeded, name was truncated /W1 C4503 NOWARN NOWARN
'function' : unreferenced local function has been removed /W4 C4505
no definition for inline function 'function' /W1 C4506
'function' : function should return a value; 'void' return type assumed /W1 C4508 error -fpermissive error
nonstandard extension used: 'function' uses SEH and 'object' has destructor C4509
'class' : default constructor could not be generated /W4 C4510
'class' : copy constructor could not be generated /W3 C4511
'class' : assignment operator could not be generated /W4 C4512
'class' : destructor could not be generated /W4 C4513
'function' : unreferenced inline function has been removed /W4 C4514 NOWARN NOWARN
'namespace' : namespace uses itself /W4 C4515 NOWARN NOWARN
'class::symbol' : access-declarations are deprecated; member using-declarations provide a better alternative /W4 C4516 -Wdeprecated -Wdeprecated or C++11 error access declarations are deprecated; use using declarations instead
access-declarations are deprecated; member using-declarations provide a better alternative /W4 C4517
'specifier' : storage-class or type specifier(s) unexpected here; ignored /W1 C4518 - -
default template arguments are only allowed on a class template error C4519
'class' : multiple copy constructors specified /W3 C4521
'class' : multiple assignment operators specified /W3 C4522
'class' : multiple destructors specified /W3 C4523
'function' : static member function cannot override virtual function 'virtual function'override ignored, virtual function will be hidden /W1 C4526 - -
C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc /W1 C4530 NOWARN NOWARN
C++ exception handling not available on Windows CE. Use Structured Exception Handling /W1 C4531
'continue' : jump out of __finally/finally block has undefined behavior during termination handling /W1 C4532 - -
initialization of 'variable' is skipped by 'instruction' /W1 C4533 error error
'constructor' will not be a default constructor for class 'class' due to the default argument /W3 C4534 clr - -
calling _set_se_translator() requires /EHa /W3 C4535 - -
'type name' : type-name exceeds meta-data limit of 'limit' characters /W4 C4536
'object' : 'operator' applied to non-UDT type /W1 C4537 - -
'type' : const/volatile qualifiers on this type are not supported /W3 C4538 clr - -
dynamic_cast used to convert to inaccessible or ambiguous base; run-time test will fail ('type1' to 'type2') /W1 C4540 error error cannot cast 'NAME' to its private base class 'NAME'
'identifier' used on polymorphic type 'type' with /GR-; unpredictable behavior may result /W1 C4541 - -
Skipping generation of merged injected text file, cannot write filetype file: 'issue': message /W1 C4542
Injected text suppressed by attribute 'no_injected_text' /W3 C4543
'declaration': Default template argument ignored on this template declaration /W1 C4544 error error cannot add a default template argument to the definition of a member of a class template
expression before comma evaluates to a function which is missing an argument list /W1 C4545 NOWARN -Wcomma possible misuse of comma operator here ☑️
function call before comma missing argument list /W1 C4546 -Waddress -Wcomma possible misuse of comma operator here ☑️
'operator' : operator before comma has no effect; expected operator with side-effect /W1 C4547 -Wtautological-compare -Wunused-comparison inequality comparison result unused ☑️
expression before comma has no effect; expected expression with side-effect /W1 C4548 -Wunused-value -Wunused-value expression result unused ☑️
'operator' : operator before comma has no effect; did you intend 'operator'? /W1 C4549 -Wunused-value -Wunused-comparison equality comparison result unused ☑️
expression evaluates to a function which is missing an argument list /W1 C4550 NOWARN NOWARN
function call missing argument list /W1 C4551 -Waddress -Wunused-value expression result unused ☑️
'operator' : operator has no effect; expected operator with side-effect /W1 C4552 -Wunused-value -Wunused-value expression result unused ☑️
'operator' : operator has no effect; did you intend 'operator'? /W1 C4553 -Wunused-value -Wunused-comparison equality comparison result unused ☑️
'operator' : check operator precedence for possible error; use parentheses to clarify precedence /W3 C4554 -Wparentheses -Wshift-op-parentheses operator '<<' has lower precedence than '+'; '+' will be evaluated first ☑️
expression has no effect; expected expression with side-effect /W1 C4555 -Wunused-value -Wunused-value expression result unused ☑️
value of intrinsic immediate argument 'value' is out of range 'lowerbound - upperbound' /W1 C4556 - -
'__assume' contains effect 'effect' /W3 C4557 - -
value of operand 'value' is out of range 'lowerbound - upperbound' /W1 C4558 - -
'function' : redefinition; the function gains __declspec(modifier) /W4 C4559 - -
'__fastcall' incompatible with the '/clr' option: converting to '__stdcall' /W1 C4561 - -
fully prototyped functions are required with the '/clr' option: converting '()' to '(void)' /W4 C4562 clr - -
method 'method' of class 'class' defines unsupported default parameter 'parameter' - -
'function' : redefinition; the symbol was previously declared with __declspec(modifier) /W4 C4565 - -
character represented by universal-character-name 'char' cannot be represented in the current code page (page) /W1 C4566 -Wmultichar error character too large for enclosing character literal type ☑️
'function': no members match the signature of the explicit override /W1 C4568
'function': no members match the signature of the explicit override /W3 C4569
'type' : is not explicitly declared as abstract but has abstract functions /W3 C4570 clr - -
Informational: catch(...) semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught /W4 C4571 - -
[ParamArray] attribute is deprecated under /clr, use '...' instead /W1 C4572 clr - -
the usage of 'lambda function' requires the compiler to capture 'this' but the current default capture mode does not allow it /W1 C4573
'Identifier' is defined to be '0': did you mean to use '#if identifier'? /W4 C4574
'__vectorcall' incompatible with the '/clr' option: converting to '__stdcall' /W1 C4575 - -
'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc /W1 C4577
[attribute] is deprecated; instead specify System::Attribute or Platform::Metadata as a base class /W3 C4580 clr - -
deprecated behavior: '"string1"' replaced with 'string2' to process attribute /W1 C4581 - -
'class1' : base-class 'class2' is already a base-class of 'class3' /W1 C4584 -Winaccessible-base -Winaccessible-base direct base 'A' is inaccessible due to ambiguity ☑️
'name': illegal qualified name in member declaration /W4 C4596 error error
undefined behavior: offsetof applied to a member of a virtual base error C4597
'#include "header"': header number number in the precompiled header does not match current compilation at that position /W1,3 C4598
'flag path': command line argument number number does not match precompiled header /W3 C4599

VS C4600-C4799

Summary Visual Studio GCC Clang Clang message is Same
#pragma 'macro name' : expected a valid non-empty string /W1 C4600 NOWARN NOWARN
#pragma pop_macro : 'macro name' no previous #pragma push_macro for this identifier /W1 C4602 NOWARN -Wignored-pragmas pragma pop_macro could not pop 'x', no matching push_macro
'identifier' : macro is not defined or definition is different after precompiled header use /W1 C4603
#pragma warning : 'warning_number' ignored; Code Analysis warnings are not associated with warning levels /W1 C4604 -Wunknown-pragmas -Wunknown-pragmas unknown pragma ignored
'union_member' has already been initialized by another union member in the initializer list, 'union_member' /W3 C4608 error error initializing multiple members of union
object 'class' can never be instantiated - user-defined constructor required /W4 C4610 error error extra qualification on member 'operator='
interaction between 'function' and C++ object destruction is non-portable /W4 C4611
This warning occurs with #pragma include_alias when a filename is incorrect or missing /W1 C4612 -Wunknown-pragmas -Wunknown-pragmas
'segment' : class of segment cannot be changed /W1 C4613
#pragma warning : unknown user warning type /W1 C4615 -Wunknown-pragmas -Wunknown-pragmas
#pragma warning : warning number 'number' not a valid compiler warning /W1 C4616 -Wunknown-pragmas -Wunknown-pragmas
pragma parameters included an empty string; pragma ignored /W1 C4618 -Wunknown-pragmas -Wunknown-pragmas
#pragma warning : there is no warning number 'number' /W3 C4619 -Wunknown-pragmas -Wunknown-pragmas
no postfix form of 'operator ++' found for type 'type', using prefix form /W1 C4620 error C2676 error error
no postfix form of 'operator --' found for type 'type', using prefix form /W1 C4621 error C2676] error error
Overwriting debug information formed during creation of the precompiled header in object file: 'file' /W3 C4622 - -
'derived class' : default constructor was implicitly defined as deleted because a base class default constructor is inaccessible or deleted /W4 C4623 NOWARN NOWARN
'derived class' : destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted /W1 C4624 NOWARN NOWARN
'derived class' : copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted /W4 C4625 NOWARN NOWARN
'derived class' : assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted /W4 C4626 NOWARN NOWARN
'header_file': skipped when loNOWARNing for precompiled header use /W1 C4627 - -
digraphs not supported with -Ze. Character sequence 'digraph' not interpreted as alternate tNOWARNen for 'char' /W1 C4628 NOWARN NOWARN
digraph used, character sequence 'digraph' interpreted as tNOWARNen 'char' (insert a space between the two characters if this is not what you intended) /W4 C2629 NOWARN NOWARN
'symbol' : 'extern' storage class specifier illegal on member definition /W1 C4630 NOWARN NOWARN
MSXML or XPath unavailable, XML document comments will not be processed. reason /W1 C4631
XML document comment: file - access denied: reason /W1 C4632 - -
XML document comment target: error: reason /W3 C4633 - -
XML document comment: cannot be applied: reason /W4 C4634 - -
XML document comment target: badly-formed XML: reason /W3 C4635 - -
XML document comment applied to 'construct': tag requires non-empty '' attribute. /W3 C4636 - -
XML document comment target: tag discarded. reason /W3 C4637 - -
XML document comment target: reference to unknown symbol 'symbol' /W3 C4638 - -
MSXML error, XML document comments will not be processed. reason /W4 C4639 - -
'instance' : construction of local static object is not thread-safe /W3 C4640
XML document comment has an ambiguous cross reference /W3 C4641 - -
function declared with __declspec(noreturn) has a return statement /W3 C4645 - -
function declared with __declspec(noreturn) has non-void return type /W3 C4647 - -
debugging information not in precompiled header; only global symbols from the header will be available /W1 C4650
'definition' specified for precompiled header but not for current compile /W1 C4651
compiler option 'option' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header /W1 C4652 - -
compiler option 'option' inconsistent with precompiled header; current command-line option ignored /W2 C4653 - -
'symbol' : variable type is new since the last build, or is defined differently elsewhere /W1 C4655 - -
'symbol' : data type is new or has changed since the last build, or is defined differently elsewhere /W1 C4656 - -
expression involves a data type that is new since the last build /W1 C4657 - -
#pragma 'pragma' : use of reserved segment 'segment' has undefined behavior, use #pragma comment(linker, ...) /W1 C4659 -Wunknown-pragmas -Wunknown-pragmas
'identifier' : no suitable definition provided for explicit template instantiation request /W1 C4661 error error declaration does not declare anything
explicit instantiation; template-class 'identifier1' has no definition from which to specialize 'identifier2' /W1 C4662 error error declaration does not declare anything
'function' : no function template defined that matches forced instantiation /W1 C4667 error error explicit instantiation of 'max' does not refer to a function template, variable template, member function, member class, or static data member
'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives' /W4 C4668 -Wundef -Wundef 'SYMBOL' is not defined, evaluates to 0 ☑️
'cast' : unsafe conversion: 'class' is a managed or WinRT type object /W1 C4669 - -
'identifier' : this base class is inaccessible /W4 C4670 NOWARN NOWARN
'identifier1' : ambiguous. First seen as 'identifier2' /W4 C4672
throwing 'identifier' the following types will not be considered at the catch site /W4 C4673 NOWARN NOWARN
'method' should be declared 'static' and have exactly one parameter [/W C4674][] - -
'function': signature of non-private member contains assembly private type 'private_type' /W1 C4677 - -
base class 'base_type' is less accessible than 'derived_type' /W1 C4678 - -
'member' : could not import member /W1 C4679
'class' : coclass does not specify a default interface /W4 C4680 - -
'class' : coclass does not specify a default interface that is an event source /W4 C4681 - -
'parameter' : no directional parameter attribute specified, defaulting to [in] /W4 C4682 - -
'function': event source has an 'out'-parameter; exercise caution when hoNOWARNing multiple event handlers /W1 C4683 - -
'attribute' : WARNING!! attribute may cause invalid code generation: use with caution /W1 C4884 - -
expecting '> >' found '>>' when parsing template parameters /W1 C4685
'user-defined type' : possible change in behavior, change in UDT return calling convention /W3 C4686
'class': a sealed abstract class cannot implement an interface 'interface' C4687 - -
'constraint': constraint list contains assembly private type 'type' /W1 C4688 - -
[ emitidl( pop ) ] : more pops than pushes /W4 C4690 - -
'type' : type referenced was expected in unreferenced assembly 'file', type defined in current translation unit used instead /W1 C4691 - -
'function': signature of non-private member contains assembly private native type 'native_type' /W1 C4692 - -
'class': a sealed abstract class cannot have any instance members 'Test' C4693 - -
'class': a sealed abstract class cannot have a base-class 'base_class' C4694 - -
uninitialized local variable 'name' used /W1,4 C4700 -Wuninitialized -Wuninitialized variable 'NAME' is uninitialized when used here ☑️
Potentially uninitialized local variable 'name' used /W4 C4701 NOWARN -Wsometimes-uninitialized variable 'NAME' is used uninitialized whenever 'if' condition is false ☑️
unreachable code /W4 C4702 -Wunreachable-code ? -Wunreachable-code code will never be executed ☑️
Potentially uninitialized local pointer variable 'name' used /W4 C4703 NOWARN -Wsometimes-uninitialized variable 'NAME' is used uninitialized whenever 'if' condition is false ☑️
assignment within conditional expression /W4 C4706 -Wparentheses -Wparentheses using the result of an assignment as a condition without parentheses ☑️
comma operator within array index expression /W4 C4709 -Wcomma-subscript -Wdeprecated-comma-subscript top-level comma expression in array subscript is deprecated ☑️
'function' : function not inlined /W4 C4710
function 'function' selected for inline expansion /W1 C4711
function 'function' marked as __forceinline not inlined /W4 C4714 - -
'function' : not all control paths return a value /W1 C4715 -Wreturn-type -Wreturn-type non-void function does not return a value in all control paths ☑️
'function' must return a value /W1 C4716 -Wreturn-type -Wreturn-type non-void function does not return a value in all control paths ☑️
'function' : recursive on all control paths, function will cause runtime stack overflow /W1 C4717 NOWARN -Winfinite-recursion all paths through this function will call itself ☑️
'function call' : recursive call has no side effects, deleting /W4 C4718
'function' : destructor never returns, potential memory leak /W1 C4722 NOWARN NOWARN
potential divide by 0 /W3 C4723 -Wdiv-by-zero -Wdivision-by-zero division by zero is undefined ☑️
potential mod by 0 /W3 C4724 -Wdiv-by-zero -Wdivision-by-zero division by zero is undefined ☑️
instruction may be inaccurate on some Pentiums /W4 C4725 - -
"PCH named pch_file with same timestamp found in obj_file_1 and obj_file_2. Using first PCH. /W1 C4727 - -
function too big for flow graph based warnings /W1 C4729 - -
'main' : mixing _m64 and floating point expressions may result in incorrect code /W1 C4730 - -
'pointer' : frame pointer register 'register' modified by inline assembly code /W1 C4731 - -
Inline asm assigning to 'FS:0' : handler not registered as safe handler /W1 C4733 - -
storing 32-bit float result in memory, possible loss of performance /W3 C4738
reference to variable 'var' exceeds its storage space /W1 C4739 NOWARN -Wcast-align
flow in or out of inline asm code suppresses global optimization /W4 C4740 - -
'variable' has different alignment in 'file1' and 'file2': number1 and number2 /W1 C4742 NOWARN NOWARN
'type' has different size in 'file1' and 'file2': number and number bytes /W1 C4743
'var' has different type in 'file1' and 'file2': 'type1' and 'type2' /W1 C4744 NOWARN NOWARN
volatile access of '' is subject to /volatile:[iso|ms] setting; consider using __iso_volatile_load/store intrinsic functions. C4746
Calling managed 'entrypoint': Managed code may not be run under loader lock, including the DLL entrypoint and calls reached from the DLL entrypoint /W1 C4747 - -
'identifier': function with _alloca() inlined into a loop /W1 C4750 - -
Conversion rules for arithmetic operations in a comparison mean that one branch cannot be executed. /W4 C4754 NOWARN NOWARN
overflow in constant arithmetic /W2 C4756
Cannot align catch objects to greater than 16 bytes /W1 C4764 NOWARN -Wunderaligned-exception-object underaligned exception object thrown
#import referenced a type from a missing type library; 'missing-type' used as a placeholder /W1 C4772 - -
'identifier' : identifier was truncated to 'number' characters /W1 C4788 - -
buffer 'identifier' of size N bytes will be overrun; M bytes will be written starting at offset L /W1 C4789 NOWARN -Wfortify-source 'NAME' will always overflow; destination buffer has size SIZE, but size argument is SIZE ☑️
function 'function' declared using sysimport and referenced from native code; import library required to link /W3 C4792 - -
'function' : function is compiled as native code: 'reason' /W1,3 C4793 - -
segment of thread local storage variable 'variable' changed from 'section name' to '.tls$' /W1 C4794 - -
No EMMS at end of function 'function' /W1 C4799 - -

VS C4800-C5999

Summary Visual Studio GCC Clang Clang message is Same
Implicit conversion from 'type' to bool. Possible information loss /W4 C4800 -Wdeprecated -Wdeprecated-increment-bool incrementing expression of type bool is deprecated and incompatible with C++17 ☑️
'method' : the raise method has a different storage class from that of the event, 'event' /W1 C4803 - -
'operation' : unsafe use of type 'bool' in operation /W1 C4804 NOWARN NOWARN
'operation' : unsafe mix of type 'type' and type 'type' in operation /W1 C4805 NOWARN NOWARN
'operation' : unsafe operation: no value of type 'type' promoted to type 'type' can equal the given constant /W1 C4806 -Wbool-compare -Wtautological-constant-out-of-range-compare result of comparison of constant 3 with expression of type 'bool' is always false ☑️
'operation' : unsafe mix of type 'type' and signed bitfield of type 'type' /W1 C4807 NOWARN NOWARN
case 'value' is not a valid value for switch condition of type 'bool' /W1 C4808 -Wswitch-outside-range (-Wswitch-bool) ☑️
switch statement has redundant 'default' label; all possible 'case' labels are given /W1 C4809
value of pragma pack(show) == n /W1 C4810 - -
value of pragma conform(forScope, show) == value /W1 C4811 - -
obsolete declaration style: please use 'new_syntax' instead /W1 C4812 error error
'function' : a friend function of a local class must have been previously declared /W1 C4813 error error no matching function found in local scope
'param' : parameter has a zero-sized array which will be truncated (unless the object is passed by reference) /W4 C4816 NOWARN NOWARN
'member' : illegal use of '.' to access this member; compiler replaced with '->' /W1 C4817 - -
The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss. /W1 C4819
'bytes' bytes padding added after construct 'member_name' /W4 C4820 - -
Unable to determine Unicode encoding type, please save the file with signature (BOM) /W1 C4821
'member' : local class member function does not have a body /W1 C4822 NOWARN NOWARN
'function' : uses pinning pointers but unwind semantics are not enabled. Consider using /EHa /W3 C4823 - -
Conversion from 'type1' to 'type2' is sign-extended. This may cause unexpected runtime behavior. /W2 C4826
A public 'ToString' method with 0 parameters should be marked as virtual and override /W3 C4827 - -
Possibly incorrect parameters to function main. Consider 'intmain(Platform::ArrayPlatform::String^^ argv)' /W1 C4829 - -
'variable' : the initializer for exported data will not be run until managed code is first executed in the host assembly /W1 C4835 - -
trigraph detected: '??character' replaced by 'character' /W4 C4837
conversion from 'type_1' to 'type_2' requires a narrowing conversion /W1 C4838 -Wnarrowing -Wc++11-narrowing type 'double' cannot be narrowed to 'int' in initializer list ☑️
non-standard use of class 'type' as an argument to a variadic function /W3 C4839 error error
non-portable use of class 'type' as an argument to a variadic function /W4 C4840 NOWARN error (-Wnon-pod-varargs) cannot pass non-trivial object of type 'TYPE' to variadic function; expected type from format string was 'TYPE'
non-standard extension used: compound member designator used in offsetof /W4 C4841
the result of 'offsetof' applied to a type using multiple inheritance is not guaranteed to be consistent between compiler releases /W4 C4842
'type1': An exception handler of reference to array or function type is unreachable, use 'type2' instead C4843
'export module module_name;' is now the preferred syntax for declaring a module interface C4844
'__declspec(no_init_all)' is ignored if '/d1initall[0|1|2|3]' was not specified on the command line /W4 C4845 - -
'value' is not a valid argument for '/d1initall': command-line flag ignored /W4 C4846 - -
'__declspec(no_init_all)' can only be applied to a function, a class type, or a local variable: ignored /W4 C4847 - -
support for standard attribute 'no_unique_address' in C++17 and earlier is a vendor extension /W1 C4848
binding dereferenced null pointer to reference has undefined behavior C4854
implicit capture of 'this' via '[=]' is deprecated in 'version' C4855
'value' is not a valid argument for '/d1initAll:FillPattern' (value must be between 0 and 255). Command-line flag ignored C4856 - -
C++/CLI mode does not support C++ versions newer than C++17; setting language to /std:c++17 C4857 - -
'file(line_number)' compiler may not enforce left-to-right evaluation order for call to operator_name /W4 C4866
'function': function call missing argument list; use 'call' to create a pointer to member C4867 error error
'file(line_number)' compiler may not enforce left-to-right evaluation order in braced initializer list C4868 NOWARN NOWARN
floating point division by zero detected when compiling the call graph for the concurrency::parallel_for_each at: 'location' /W2 C4872
casting from 'const type_1' to 'type_2': casting away constness from a pointer or reference may result in undefined behavior in an amp restricted function /W1 C4880
the constructor and/or the destructor will not be invoked for tile_static variable 'variable-name' /W4 C4881
passing functors with non-const call operators to concurrency::parallel_for_each is deprecated /W1 C4882
intermediate language mismatch between 'tool1' version 'version1' and 'tool2' version 'version2' /W1 C4900
wide string literal cast to 'LPSTR' /W1 C4905 - -
string literal cast to 'LPWSTR' /W1 C4906 - -
'' : '__declspec(dllexport)' and 'extern' are incompatible on an explicit instantiation /W1 C4910 - -
'attribute': attribute has undefined behavior on a nested UDT /W1 C4912 - -
user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used /W4 C4913 NOWARN -Wcomma possible misuse of comma operator here ☑️
in order to have a dispid, 'description': must be introduced by an interface /W1 C4916
'declarator' : a GUID can only be associated with a class, interface or namespace /W1 C4917 - -
'character' : invalid character in pragma optimization list /W4 C4918 - -
enum enum member member=value already seen in enum enum as member=value /W1 C4920 - -
'description': attribute value 'attribute' should not be multiply specified /W3 C4921
'method': dispinterface method cannot be called from script /W1 C4925 - -
'identifier': symbol is already defined: attributes ignored /W1 C4926 - -
illegal conversion; more than one user-defined conversion has been implicitly applied /W1 C4927 error error
illegal copy-initialization; more than one user-defined conversion has been implicitly applied /W1 C4928 error error
'file': typelibrary contains a union; ignoring the 'embedded_idl' qualifier /W1 C4929 - -
'prototype': prototyped function not called (was a variable definition intended?) /W1 C4930 NOWARN -Wvexing-parse empty parentheses interpreted as a function declaration ☑️
we are assuming the type library was built for number-bit pointers /W4 C4931 - -
__identifier(identifier_1) and __identifier(identifier_2) are indistinguishable /W4 C4932 - -
'__delegate(multicast)' is deprecated, use '__delegate' instead /W1 C4934 - -
assembly access specifier modified from 'access' /W1 C4935 - -
this __declspec is supported only when compiled with /clr or /clr:pure C4936 - -
'text1' and 'text2' are indistinguishable as arguments to 'directive' /W4 C4937 - -
'var' : Floating point reduction variable may cause inconsistent results under /fp:strict or #pragma fenv_access /W4 C4938 - -
#pragma vtordisp is deprecated and will be removed in a future release of Visual C++ /W1 C4939 - -
'symbol' : cannot import symbol from 'assembly1': as 'symbol' already exists in the current scope /W1 C4944 clr - -
'symbol' : cannot import symbol from 'assembly2': as 'symbol' has already been imported from another assembly 'assembly1' /W1 C4945 - -
reinterpret_cast used between related classes: 'class1' and 'class2' /W1 C4946 NOWARN -Wreinterpret-base-class 'reinterpret_cast' from class 'c *' to its virtual base 'a *' behaves differently from 'static_cast' ☑️
'type_or_member' : marked as obsolete /W1 C4947 - -
return type of 'accessor' does not match the last parameter type of the corresponding setter /W2 C4948 - -
pragmas 'managed' and 'unmanaged' are meaningful only when compiled with '/clr[:option]' /W1,4 C4949 - -
'type_or_member' : marked as obsolete C4950 - -
'function' has been edited since profile data was collected, function profile data not used /W1 C4951 - -
'function' : no profile data found in program database 'pgd_file' /W1 C4952 - -
Inlinee 'function' has been edited since profile data was collected, profile data not used /W1 C4953 - -
'function': not profiled (contains __int64 switch expression) C4954 - -
'import2': import ignored; already imported from 'import1' C4955 - -
'type' : this type is not verifiable C4956 clr - -
'cast' : explicit cast from 'cast_from' to 'cast_to' is not verifiable C4957 clr - -
'operation' : pointer arithmetic is not verifiable C4958 clr - -
cannot define unmanaged struct 'type' in /clr:safe because accessing its members yields unverifiable code C4959 clr - -
'function' is too big to be profiled /W4 C4960 - -
No profile data was merged into '.pgd file', profile-guided optimizations disabled C4961 - -
'function' : Profile-guided optimizations disabled because optimizations caused profile data to become inconsistent" C4962
'description': no profile data found; different compiler options were used in instrumented build /W1 C4963
No optimization options were specified; profile info will not be collected /W1 C4964
implicit box of integer 0; use nullptr or explicit cast /W1 C4965 clr - -
'function' has __code_seg annotation with unsupported segment name, annotation ignored /W1 C4966 - -
delegate constructor: target object ignored since 'type' is static C4970
Argument order: , for delegate constructor is deprecated, use , /W1 C4971
Directly modifying or treating the result of an unbox operation as an lvalue is unverifiable C4972 - -
'symbol': marked as deprecated /W1 C4973 -Wdeprecated -Wdeprecated ☑️
'symbol': marked as deprecated /W1 C4973 -Wdeprecated -Wdeprecated ☑️
Warbird: function 'function' marked as __forceinline not inlined because it contains exception semantics /W3 C4981
'if constexpr' is a C++17 language extension C4984 warning -Wc++17-extensions constexpr if is a C++17 extension ☑️
'symbol-name': attributes not present on previous declaration. /W4 C4985 - -
'function': exception specification does not match previous declaration C4986 error error
nonstandard extension used: 'throw (...)' /W4 C4987
'variable': variable declared outside class/function scope /W4 C4988
'type': type has conflicting definitions. /W4 C4989
Warbird: message /W3 C4990
Warbird: function 'function' marked as __forceinline not inlined because protection level of inlinee is greater than the parent /W3 C4991
Warbird: function 'function-name' marked as __forceinline not inlined because it contains inline assembly which cannot be protected /W3 C4992
'function': name was marked as #pragma deprecated /W3 C4995 - -
Your code uses a function, class member, variable, or typedef that's marked deprecated. Symbols are deprecated by using a __declspec(deprecated) modifier, or the C++14 [[deprecated]] attribute. The actual C4996 warning message is specified by the deprecated modifier or attribute of the declaration. /W3 C4996 -Wdeprecated-declarations -Wdeprecated-declarations 'NAME' is deprecated ☑️
'class': coclass does not implement a COM interface or pseudo-interface /W3 C4997 - -
EXPECTATION FAILED: expectation(value) /W1 C4998
UNKNOWN WARNING From the Help menu choose the Technical Support command or open the Technical Support help file for more information /W1 C4999
'type': multiple move constructors specified C5022 wip wip
'type': multiple move assignment operators specified C5023 wip wip
'type': move constructor was implicitly defined as deleted /W4 C5024 wip wip
'type': move assignment operator was implicitly defined as deleted /W4 C5025 wip wip
'type': move constructor was implicitly defined as deleted /W1,4 C5026 wip wip
'type': move assignment operator was implicitly defined as deleted /W1,4 C5027 wip wip
'name': Alignment specified in prior declaration (number) not specified in definition /W1 C5028 wip wip
nonstandard extension used: alignment attributes in C++ apply to variables, data members and tag types only /W4 C5029 wip wip
attribute 'attribute-name' is not recognized /W3 C5030 wip wip
#pragma warning(pop): likely mismatch, popping warning state pushed in different file /W4 C5031 - -
detected #pragma warning(push) with no corresponding #pragma warning(pop) /W4 C5032 - -
'storage-class' is no longer a supported storage class /W1 C5033 wip wip
use of intrinsic 'intrinsic' causes function function-name to be compiled as guest codeC5034
use of feature 'feature' causes function function-name to be compiled as guest code C5035
varargs function pointer conversion when compiling with /hybrid:x86arm64 'type1' to 'type2' /W1 C5036 - -
'member-function': an out-of-line definition of a member of a class template cannot have default arguments error C5037
data member 'member1' will be initialized after data member 'member2' data member 'member' will be initialized after base class 'base_class' C5038 -Wreorder -Wreorder-ctor field 'y' will be initialized after field 'x' ☑️
'function': pointer or reference to potentially throwing function passed to extern C function under -EHc. Undefined behavior may occur if this function throws an exception. /W4 C5039
dynamic exception specifications are valid only in C++14 and earlier; treating as noexcept(false) /W3 C5040 wip wip
'definition': out-of-line definition for constexpr static data member is not needed and is deprecated in C++17 /W1 C5041 wip wip
'declaration': function declarations at block scope cannot be specified 'inline' in standard C++; remove 'inline' specifier /W3 C5042 wip wip
'specification': exception specification does not match previous declaration /W2 C5043 wip wip
An argument to command-line option option-name points to a path 'path-name' that does not exist /W4 C5044 - -
Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified C5045 - -
'function' : Symbol involving type with internal linkage not defined /W2 C5046
use of nonstandard __if_exists with modules is not supported /W1 C5047 - -
Use of macro 'macroname' may result in non-deterministic output /W1 C5048
'string': Embedding a full path may result in machine-dependent output /W1 C5049
Possible incompatible environment while importing module 'module_name': issue /W1 C5050 wip wip
attribute 'attribute-name' requires at least 'standard-level'; ignored C5051 wip wip
Keyword 'keyword-name' was introduced in C++ and requires use of the 'option-name' command-line option C5052
support for 'explicit(<expr>)' in C++17 and earlier is a vendor extension C5053 wip wip
operator 'operator-name': deprecated between enumerations of different types C5054 wip wip
operator 'operator-name': deprecated between enumerations and floating-point types C5055 wip wip
operator 'operator-name': deprecated for array types C5056 wip wip
header unit reference to 'name' already exists. Ignoring header unit 'header-name' C5057 wip wip
file system error: cannot find header file 'file-name' for header unit 'unit-name' C5058 wip wip
runtime checks and address sanitizer is not currently supported - disabling runtime checks C5059 - -
/Qpar and address sanitizer not currently supported - disabling auto-parallelization C5060 - -
the use of a comma operator as a subscript expression has been deprecated C5061 wip wip
enum direct list initialization between 'type-1' and 'type-2' is no longer supported C5062 wip wip
'std::is_constant_evaluated' always evaluates to true in manifestly constant-evaluated expressions C5063 wip wip
VA_ARGS is reserved for use in variadic macros /W1 C5100 wip wip
use of preprocessor directive in function-like macro argument list is undefined behavior /W1 C5101 wip wip
ignoring invalid command-line macro definition 'value' /W1 C5102
pasting 'token1' and 'token2' does not result in a valid preprocessing token /W1 C5103 wip wip
found 'string1#string2' in macro replacement list, did you mean 'string1""#string2'? /W1 C5104 wip wip
macro expansion producing 'defined' has undefined behavior /W1 C5105 -Wexpansion-to-defined -Wexpansion-to-defined macro expansion producing 'defined' has undefined behavior ☑️
macro redefined with different parameter names /W1 C5106 wip wip
missing terminating 'char' character /W1 C5107 wip wip
VA_OPT is reserved for use in variadic macros C5108 wip wip
feature 'feature-name' requires compiler flag 'option-name' C5200
a module declaration can appear only at the start of a translation unit unless a global module fragment is used C5201 wip wip
a global module fragment can only contain preprocessor directives C5202 wip wip
a parenthesized declarator name after 'explicit' will be considered an explicit-specifier in C++20 C5203 wip wip
'type-name': class has virtual functions, but its trivial destructor is not virtual; instances of objects derived from this class may not be destructed correctly C5204 -Wnon-virtual-dtor -Wnon-virtual-dtor 'CLASS' has virtual functions but non-virtual destructor ☑️
delete of an abstract class 'type-name' that has a non-virtual destructor results in undefined behavior C5205 wip wip
deduced return types for coroutines is a non-standard extension C5206 wip wip
the simple requirement asserts the validity of expression 'e->id'. Did you mean '{ e } -> id'? You can suppress the warning using '{ e->id }' C5207 wip wip
unnamed class used in typedef name cannot declare members other than non-static data members, member enumerations, or member classes /W1 C5208,error C7626 error error
C5219 NOWARN -Wimplicit-int-float-conversion implicit conversion from 'int' to 'float' may lose precision ☑️

no VS

Summary Visual Studio GCC Clang Clang message is Same
- - -Wabsolute-value taking the absolute value of unsigned type 'unsigned char' has no effect
- - -Wambiguous-reversed-operator ISO C++20 considers use of overloaded operator '==' (with operand types 'TYPE' and 'TYPE') to be ambiguous despite there being a unique best viable function
- - -Wcovered-switch-default default label in switch which covers all enumeration values
int x = NULL; - -Wconversion-null -Wnull-conversion implicit conversion of NULL constant to 'TYPE'
if .. else .. - -Wdangling-else -Wdangling-else add explicit braces to avoid dangling else
- - -Wdangling-gsl object backing the pointer will be destroyed at the end of the full-expression
- -Wdouble-promotion -Wdouble-promotion implicit conversion increases floating-point precision: 'float' to 'double'
- NOWARN -Wabstract-final-class abstract class is marked 'final'
- - -Wexit-time-destructors declaration requires an exit-time destructor
- - -Wglobal-constructors declaration requires a global destructor
- - -Winconsistent-missing-override 'NAME' overrides a member function but is not marked 'override'
- - -Winconsistent-missing-destructor-override 'NAME' overrides a destructor but is not marked 'override'
- - -Wmissing-braces suggest braces around initialization of subobject
- - -Wnull-arithmetic comparison between NULL and non-pointer ('nullptr_t' and NULL)
- -Wmissing-noreturn(-Wsuggest-attribute=noreturn) -Wmissing-noreturn function 'NAME' could be declared with attribute 'noreturn'
- -Wshadow -Wshadow-field-in-constructor constructor parameter 'VAR' shadows the field 'VAR' of 'CLASS'
-Wshadow-compatible-local -Wshadow-uncaptured-local declaration shadows a local variable
- -Wsuggest-override -Wsuggest-override 'NAME' overrides a member function but is not marked 'override'
- - -Wsuggest-destructor-override 'NAME' overrides a destructor but is not marked 'override'
- - -Wparentheses-equality equality comparison with extraneous parentheses
#define __HOGE - - -Wreserved-id-macro macro name is a reserved identifier
int* p=0; - - -Wzero-as-null-pointer-constant zero as null pointer constant
- - -Wgnu-zero-variadic-macro-arguments must specify at least one argument for '...' parameter of variadic macro

Annotaion

C-Only

C only warning??

Off

This warning is off by default.

Obsolete

  • VS2017
    Obsolete: This warning is not generated by Visual Studio 2017 and later versions.