boost icon indicating copy to clipboard operation
boost copied to clipboard

msvc compiler warning turned as error are restored to warning

Open gzzi opened this issue 3 years ago • 0 comments

Hello,

We would like to compile code with msvc and warning C4002 as error. To do so, we set the compiler flag /we4002.

When we include some boost header, the compiler error 4002 is set back to warning due to this line or this line.

Example:

With a file main.cpp:

#define SUM(a, b)    ((a)+(b))

int main(void)
{
    return SUM(1,2,3);  // note the extra arg 3
}

compiled with

C:\tmp>"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\Hostx64\x64\cl.exe" /we4002 /I. /EHsc main.cpp

it produce error:

Compilateur d'optimisation Microsoft (R) C/C++ version 19.30.30706 pour x64
Copyright (C) Microsoft Corporation. Tous droits réservés.

main.cpp
main.cpp(5): error C4002: trop d'arguments pour l'appel de macro de type fonction 'SUM'

(this is the expected behavior)

but if the file use boost unit_test.hpp:

#define BOOST_TEST_MODULE MyTest
#include <boost/test/unit_test.hpp>

#define SUM(a, b)    ((a)+(b))

int main(void)
{
    return SUM(1,2,3);  // note the extra arg 3
}

compiled with the same command line

C:\tmp>"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\Hostx64\x64\cl.exe" /we4002 /I. /EHsc main.cpp

The extra argument is now accepted by producing only a warning:

Compilateur d'optimisation Microsoft (R) C/C++ version 19.30.30706 pour x64
Copyright (C) Microsoft Corporation. Tous droits réservés.

main.cpp
main.cpp(8): warning C4002: trop d'arguments pour l'appel de macro de type fonction 'SUM'
... <try to link>

gzzi avatar Sep 24 '21 06:09 gzzi