Skip to content

msvc compiler warning turned as error are restored to warning #563

@gzzi

Description

@gzzi

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions