Euphoria
compiler_warning.h
Go to the documentation of this file.
1 #pragma once
2 
3 
4 // https://www.fluentcpp.com/2019/08/30/how-to-disable-a-warning-in-cpp/
5 
6 #if defined(_MSC_VER)
7  #define DISABLE_WARNING_PUSH __pragma(warning( push ))
8  #define DISABLE_WARNING_POP __pragma(warning( pop ))
9 
10  #define DISABLE_WARNING(warningNumber) __pragma(warning( disable : warningNumber ))
11 
12  // warning C4459: declaration of 'X' hides global declaration
13  // https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4459?view=msvc-170
14  #define DISABLE_GLOBAL_DECLARATION DISABLE_WARNING(4459)
15  #define DISABLE_WARNING_UNUSED_VARIABLE
16 #elif defined(__GNUC__) || defined(__clang__)
17  #define DISABLE_WARNING_PUSH DO_PRAGMA(GCC diagnostic push)
18  #define DISABLE_WARNING_POP DO_PRAGMA(GCC diagnostic pop)
19 
20  #define DO_PRAGMA(X) _Pragma(#X)
21  #define DISABLE_WARNING(warningName) DO_PRAGMA(GCC diagnostic ignored #warningName)
22 
23  // gcc and clang definitons
24  #define DISABLE_GLOBAL_DECLARATION
25  #define DISABLE_WARNING_UNUSED_VARIABLE DISABLE_WARNING(-Wunused-variable)
26 
27  #if !defined(__clang__)
28  // gcc definitions
29  // #define DISABLE_WARNING_UNUSED_VARIABLE
30  #else
31  // clang definitions
32  #endif
33 #else
34  #define DISABLE_WARNING_PUSH
35  #define DISABLE_WARNING_POP
36 
37  #define DISABLE_GLOBAL_DECLARATION
38  #define DISABLE_WARNING_UNUSED_VARIABLE
39 #endif
40