Work around MSVC's lack of standard _Pragma support

This commit is contained in:
Chris Robinson
2019-09-18 13:58:04 -07:00
parent b8f64155e9
commit 24a1058952
2 changed files with 8 additions and 8 deletions
+1 -1
View File
@@ -199,7 +199,7 @@ IF(MSVC)
IF(HAVE_PERMISSIVE_SWITCH)
SET(C_FLAGS ${C_FLAGS} $<$<COMPILE_LANGUAGE:CXX>:/permissive->)
ENDIF()
SET(C_FLAGS ${C_FLAGS} /W4 /w14640 /wd4065 /wd4200 /wd4268 /wd4324)
SET(C_FLAGS ${C_FLAGS} /W4 /w14640 /wd4065 /wd4268 /wd4324)
IF(NOT DXSDK_DIR)
STRING(REGEX REPLACE "\\\\" "/" DXSDK_DIR "$ENV{DXSDK_DIR}")
+7 -7
View File
@@ -12,19 +12,19 @@
#ifdef _MSC_VER
#define DIAGNOSTIC_PUSH _Pragma("warning(push)")
#define DIAGNOSTIC_PUSH __pragma(warning(push))
#define GNUDIAGNOSTIC(x)
#define MVSDIAGNOSTIC(x) _Pragma(x)
#define DIAGNOSTIC_POP _Pragma("warning(pop)")
#define MVSDIAGNOSTIC(...) __pragma(__VA_ARGS__)
#define DIAGNOSTIC_POP __pragma(warning(pop))
#elif defined(__GNUC__) || defined(__clang__)
#define DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
#define GNUDIAGNOSTIC(x) _Pragma(x)
#define MVSDIAGNOSTIC(x)
#define MVSDIAGNOSTIC(...)
#define DIAGNOSTIC_POP _Pragma("GCC diagnostic push")
#else
#define DIAGNOSTIC_PUSH
#define GNUDIAGNOSTIC(x)
#define MVSDIAGNOSTIC(x)
#define MVSDIAGNOSTIC(...)
#define DIAGNOSTIC_POP
#endif
@@ -113,7 +113,7 @@ inline T* assume_aligned(T *ptr) noexcept
* destructor is trivial (a no-op). So disable that warning for this call.
*/
DIAGNOSTIC_PUSH
MVSDIAGNOSTIC("warning(disable : 4100)")
MVSDIAGNOSTIC(warning(disable : 4100))
template<typename T>
inline void destroy_at(T *ptr) { ptr->~T(); }
DIAGNOSTIC_POP
@@ -258,7 +258,7 @@ struct FlexArray {
const index_type mSize;
DIAGNOSTIC_PUSH
GNUDIAGNOSTIC("GCC diagnostic ignored \"-Wpedantic\"")
MVSDIAGNOSTIC("warning(disable : 4200)")
MVSDIAGNOSTIC(warning(disable : 4200))
alignas(alignment) element_type mArray[0];
DIAGNOSTIC_POP