-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Open
Description
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>
Metadata
Metadata
Assignees
Labels
No labels