Closed sbd1138 closed 2 years ago
Patched and created pull pull requests for this; sbd1138-patch1 and sbd1138-patch2
For clang/LLVM and GNUC I generally just always use a bunch of disables including -Wno-unknown-pragmas
.
#ifdef __clang__
#pragma clang diagnostic ignored "-Wc++98-compat"
#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
#pragma clang diagnostic ignored "-Wc++98-compat-local-type-template-args"
#pragma clang diagnostic ignored "-Wcovered-switch-default"
#pragma clang diagnostic ignored "-Wfloat-equal"
#pragma clang diagnostic ignored "-Wglobal-constructors"
#pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
#pragma clang diagnostic ignored "-Wlanguage-extension-token"
#pragma clang diagnostic ignored "-Wmissing-variable-declarations"
#pragma clang diagnostic ignored "-Wnested-anon-types"
#pragma clang diagnostic ignored "-Wreserved-id-macro"
#pragma clang diagnostic ignored "-Wswitch-enum"
#pragma clang diagnostic ignored "-Wtautological-type-limit-compare"
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#endif
That said, I can look at adding these specific edits.
Yep, I also have various diagnostic ignored additions in my DirectXMath.h wrapper include. The pragma one is a bit of a special case, because it deals with a preprocessor warning, and thus doesn't really disable the warning due to the way GCC deals with the diagnostics/warnings in the compile phase (as you can see in my original post, it just changes the warning from "unknown pragma" to "ignoring unknown pragma"). It's a known GCC issue.
When using DirectXMath with GCC, it generates a handful of warnings dealing with unguarded #pragma warning statements in the headers.
These are impossible to truly disable via
pragma GCC diagnostic ignored "-Wunknown-pragmas"
as these are processed during the preprocessor stage, before GCC deals with warnings (see the output below).
Fortunately, these should be easy to fix by simply wrapping the pragma warnings in question with #if defined( _MSC_VER ) and/or the appropriate MSC version.
Warnings/locations below, (these are with trying the above ignored -Wunknown-pragmas):
DirectXMath.h(100): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(100): warning : 100 | #pragma warning(push) DirectXMath.h(101): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(105): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(105): warning : 105 | #pragma warning(pop) DirectXMath.h(149): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(149): warning : 149 | #pragma warning(push) DirectXMath.h(150): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(153): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(153): warning : 153 | #pragma warning(pop) DirectXMath.h(315): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(315): warning : 315 | #pragma warning(push) DirectXMath.h(316): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(1001): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(1001): warning : 1001 | #pragma warning(pop) DirectXMath.h(2120): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(2120): warning : 2120 | #pragma warning(push) DirectXMath.h(2121): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMathConvert.inl(20): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMathConvert.inl(20): warning : 20 | #pragma warning(push) DirectXMathConvert.inl(21): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMathConvert.inl(221): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMathConvert.inl(221): warning : 221 | #pragma warning(pop) DirectXMath.h(2242): warning : ignoring #pragma warning [-Wunknown-pragmas] DirectXMath.h(2242): warning : 2242 | #pragma warning(pop)