Re: MSVC sillywarnings -- more?
* Alf P. Steinbach:
I just added MSVC sillywarnings to this list as I encountered them.
Are there more that should be added?
Note: "unreferenced" warnings are handled by other explicit mechanism.
I've now added the following:
4127 // conditional expression is constant
4661 // Juha Nieminen| a member of the template class is not defined
4099 // Noah Roberts| first seen using 'struct' now seen using 'class'
4251 // Paavo Helde| needs to have dll-interface to be used by clients
4275 // Paavo Helde| exported class derived from non-exported class
So, for those who perhaps want the list so as to transform MSVC into something
reasonable (quite a lot of code now compiles cleanly at warning level 4!),
<code>
#pragma warning( disable: 4061 ) // enum value is not *explicitly* handled in
switch
#pragma warning( disable: 4099 ) // first seen using 'struct' now seen using
'class'
#pragma warning( disable: 4127 ) // conditional expression is constant
#pragma warning( disable: 4217 ) // member template isn't copy constructor
#pragma warning( disable: 4250 ) // inherits (implements) some member via
dominance
#pragma warning( disable: 4251 ) // needs to have dll-interface to be used by
clients
#pragma warning( disable: 4275 ) // exported class derived from non-exported
class
#pragma warning( disable: 4347 ) // "behavior change", function called
instead of template
#pragma warning( disable: 4355 ) // "'this': used in member initializer list
#pragma warning( disable: 4505 ) // unreferenced function has been removed
#pragma warning( disable: 4510 ) // default constructor could not be generated
#pragma warning( disable: 4511 ) // copy constructor could not be generated
#pragma warning( disable: 4512 ) // assignment operator could not be generated
#pragma warning( disable: 4513 ) // destructor could not be generated
#pragma warning( disable: 4623 ) // default constructor could not be generated
#pragma warning( disable: 4624 ) // destructor could not be generated
#pragma warning( disable: 4625 ) // copy constructor could not be generated
#pragma warning( disable: 4626 ) // assignment operator could not be generated
#pragma warning( disable: 4640 ) // a local static object is not thread-safe
#pragma warning( disable: 4661 ) // a member of the template class is not
defined.
#pragma warning( disable: 4670 ) // a base class of an exception class is
inaccessible for catch
#pragma warning( disable: 4672 ) // a base class of an exception class is
ambiguous for catch
#pragma warning( disable: 4673 ) // a base class of an exception class is
inaccessible for catch
#pragma warning( disable: 4675 ) // resolved overload was found by
argument-dependent lookup
#pragma warning( disable: 4702 ) // unreachable code, e.g. in <list> header.
#pragma warning( disable: 4710 ) // call was not inlined
#pragma warning( disable: 4711 ) // call was inlined
#pragma warning( disable: 4820 ) // some padding was added
#pragma warning( disable: 4917 ) // a GUID can only be associated with a
class, interface or namespace
// The following are real warnings but are generated by almost all MS headers,
including
// standard library headers, so it's impractical to leave them on.
#pragma warning( disable: 4619 ) // there is no warning number 'XXXX'
#pragma warning( disable: 4668 ) // XXX is not defined as a preprocessor macro
</code>
Cheers,
- Alf