[Cbc] Compiler warning flags

Stefan Vigerske stefan at math.hu-berlin.de
Fri Apr 29 14:12:54 EDT 2011


Hi,

thanks a lot for cleaning up the code! :-)
I applied most of the changes you send to the current trunk versions.

The only one I modified was the one that defines variables for 
COIN_DBL_MAX & co. I am not sure whether the compiler will substitute 
the variables out, which I guess was desired by the CoinUtils 
projectmanager when he decided for defines.

Stefan

> Hi,
>
> I made an attempt to weed out compilation warnings from Cbc using strict
> warning flags with gcc 4.5.2. Please find the result in the attached
> patches. They are against SVN version -r1638 of Cbc trunk. They contain
> modifications of projects Cbc, Cgl, Clp, CoinUtils and Osi.
>
> I tried to remove the warnings that appeared using the following
> configuration of Cbc:
>
> ./configure ADD_CXXFLAGS="-W -Wunused -Wctor-dtor-privacy
> -Wnon-virtual-dtor -Wno-char-subscripts -Wwrite-strings
> -Wno-char-subscripts -Wcast-align -Wsign-promo -Woverloaded-virtual
> -fno-strict-aliasing -Wold-style-cast"
>
> The resulting patches contain the following changes:
>
>        * Every appearance of DBL_MAX was replaced by COIN_DBL_MAX.
>        * All the multiple definitions of COIN_DBL_MAX have been removed
>          except for the one in CoinUtils/src/CoinFinite.hpp.
>        * The definition of COIN_DBL_MAX has been changed. Now it is a
>          'const double' instead of a #define, and it is defined using
>          #include<limits>.
>                * DBL_MAX does not really conform C++ and produces
>                  old-style cast warnings.
>                * The use of #define is discouraged in C++, whenever
>                  possible.
>        * I also defined COIN_DBL_MIN in the same way and replaced DBL_MIN
>          to this.
>        * Similar changes have been made to COIN_INT_MAX. It became a
>          'const int' and it is defined using #include<limits>  instead of
>          bit operations.
>        * The `unused parameter` warnings were resolved by removing their
>          names from the declaration.
>        * Finally, I weeded out all the old-style casts from the code.
>
> There are some warnings that still remained in the code, which I
> couldn't fix because of my poor knowledge of Cbc internals:
>
>        * There are a couple of `comparison between signed and unsigned
>          integer expressions` warnings CbcOrClpParam.cpp. (I couldn't
>          figure out if I should convert them to `int` or `unsigned int`.)
>        * There are a lot of `virtual function X was hidden by Y` warnings
>          at several places. They are indeed looks quite suspicious, thus
>          should really be investigated by someone.
>
> All the best,
> Alpar
>


-- 
Stefan Vigerske
Humboldt University Berlin, Numerical Mathematics
http://www.math.hu-berlin.de/~stefan



More information about the Cbc mailing list