Hi All,
On Thu, Jan 8, 2009 at 9:57 AM, Robert Osfield <[email protected]> wrote:
> My current feeling is that we should try to suppress this and a few of
> the other misleading warnings via compile options rather that
> #pragma's in the headers. So if we have /W4 on then we should then
> disable the warnings that aren't helpful.
I've looked into the possibility and it looks like the /wd# command
line option will disable the a specific warning. So I've now
implemeneted and checked int the following:
SET(OSG_AGGRESSIVE_WARNING_FLAGS "/W4 /wd4706 /wd4127")
Which should disable two warnings:
warning C4706: assignment within conditional expression
warning C4127: conditional expression is constant
As neither of these are helpful - all the instances of code I've
reviewed that produces the above warnings looked correct, and fixing
the instances would break code cleanness/maintainability.
Another one of dubious value looks to be:
warning C4100: unreferenced formal parameter
But I haven't gone for suppressing this yet as fixing the instances of
this warning wouldn't lead to any code maintenance problems.
> We should also work towards removing the #pragma's from the headers
> completely, and work to ensure that the headers compile cleanly
> without warnings, so that 3rd party apps can go enabling/disabling
> warnings as their developers see fit.
I have now removed the disable of C4706 from include/osg/Export but
the follow are still enabled:
#if defined(_MSC_VER) && defined(OSG_DISABLE_MSVC_WARNINGS)
#pragma warning( disable : 4244 )
#pragma warning( disable : 4251 )
#pragma warning( disable : 4267 )
#pragma warning( disable : 4275 )
#pragma warning( disable : 4290 )
#pragma warning( disable : 4786 )
#pragma warning( disable : 4305 )
#pragma warning( disable : 4996 )
#endif
The OSG_DISABLE_MSVC_WARNINGS define comes in from the CMake build
system which currently sets this on my default, so for testing we
could simply set this off by default and then see what warnings we
have, then we can consider on merits of providing code workarounds for
them vs suppressing them in the header or via CMake.
As mentioned before my preference would be to fix all the warning in
the headers without any warning suppression, so that 3rd party apps
don't get polluted by warnings or suppression of warnings from the
OSG, but for the OSG source code build itself to disable the inhelpful
warnings rather than workaround them.
The next step now would be to do some more testing w.r.t warnings
under VS to see how svn/trunk is doing, with and without
OSG_DISABLE_MSVC_WARNINGS enabled, and with
OSG_USE_AGGRESSIVE_WARNINGS enabled (as it is by default now). I
don't have access to a Windows machine so I'll need others to do a
clean build with the above settings and then post the resulting
warnings.
Thanks,
Robert.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org