boostorg / boostorg/boost

msvc compiler warning turned as error are restored to warning

Open
#563 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
HTML
Stars
8.6k
Forks
1.9k
Avg merge
39m
Merged PRs (30d)
2

Description

Hello,

We would like to compile code with msvc and warning [C4002](https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4002?view=msvc-160) 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](https://github.com/boostorg/vmd/blob/39ec67f0350f27baf9fda2a413637486c4bc3c7a/include/boost/vmd/detail/is_empty.hpp#L14) or [this line](https://github.com/boostorg/preprocessor/blob/aa8f347df2b189b14c4079c6fb7fa2819ac4a6f1/include/boost/preprocessor/facilities/detail/is_empty.hpp#L19).

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

#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'
...
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.