3 ms·
This unfortunately gets messy when you're targeting multiple compilers, and in some cases multiple versions of the same compiler.
by berti 8y ago
This unfortunately gets messy when you're targeting multiple compilers, and in some cases multiple versions of the same compiler.
- deogeo 8y agoAt least clang has it covered: https://clang.llvm.org/docs/UsersManual.html#pragma-gcc-diagnostic https://clang.llvm.org/docs/UsersManual.html#pragma-gcc-diag... Don't know what the situation is on MS's and Intel's compilers.
- raptorfactor 8y agoThe same functionality is available: https://docs.microsoft.com/en-us/cpp/preprocessor/warning?view=vs-2017 https://docs.microsoft.com/en-us/cpp/preprocessor/warning?vi...
- MaulingMonkey 8y agoAnd you can use _Pragma / __pragma to hide them inside (conditional) macros without #ifdefing up every call site. There are still edge cases where you can't sanely scope them relating to when templates are evaluated, being unable to use the pragmas at arbitrary points of an expression, warnings that don't respect the warning flags properly, etc. - but it works most of the time. That said, for warnings with high false positives and low value true positives, I'll just globally suppress the warning.
- loeg 8y agoWorks well if your only targets are GCC and Clang. For building across several platforms with other compilers, you could just manipulate the flags globally on those other compilers without giving up high levels and specificity of warnings on gcc/clang.