qxLib
suppress_warnings.h
Go to the documentation of this file.
1 /**
2 
3  @file suppress_warnings.h
4  @author Khrapov
5  @date 11.11.2020
6  @copyright © Nick Khrapov, 2021. All right reserved.
7 
8 **/
9 #pragma once
10 
11 #include <qx/macros/common.h>
12 
13 #if QX_WIN
14 
15  /**
16  @def QX_PUSH_SUPPRESS_MSVC_WARNINGS
17  @brief Disable specified MSVC warnings
18  @param warnings - MSVC warnings numbers separated by space
19  **/
20  #define QX_PUSH_SUPPRESS_MSVC_WARNINGS(warnings) \
21  __pragma(warning(push)) __pragma(warning(disable : warnings)) QX_EMPTY_MACRO
22 
23  /**
24  @def QX_PUSH_SUPPRESS_ALL_WARNINGS
25  @brief Disable all warnings
26  **/
27  #define QX_PUSH_SUPPRESS_ALL_WARNINGS() __pragma(warning(push, 0)) QX_EMPTY_MACRO
28 
29  /**
30  @def QX_POP_SUPPRESS_WARNINGS
31  @brief Enable all warnings
32  **/
33  #define QX_POP_SUPPRESS_WARNINGS() __pragma(warning(pop)) QX_EMPTY_MACRO
34 
35  /**
36  @brief Force disable MSVC warnings, including all nested header includes
37  @note Prefer using QX_PUSH_SUPPRESS_MSVC_WARNINGS and QX_POP_SUPPRESS_WARNINGS
38  @param warnings - MSVC warnings numbers separated by space
39  **/
40  #define QX_DISABLE_MSVC_WARNINGS(warnings) __pragma(warning(disable : warnings)) QX_EMPTY_MACRO
41 
42  /**
43  @brief Enable warnings after QX_DISABLE_MSVC_WARNINGS
44  @param warnings - MSVC warnings numbers separated by space
45  **/
46  #define QX_RESTORE_MSVC_WARNINGS(warnings) __pragma(warning(default : warnings)) QX_EMPTY_MACRO
47 
48 #else
49 
50  #define QX_PUSH_SUPPRESS_MSVC_WARNINGS(warnings)
51  #define QX_PUSH_SUPPRESS_ALL_WARNINGS()
52  #define QX_POP_SUPPRESS_WARNINGS()
53  #define QX_DISABLE_MSVC_WARNINGS(warnings)
54  #define QX_RESTORE_MSVC_WARNINGS(warnings)
55 
56 #endif