Go to the documentation of this file. 24 #ifndef PXR_BASE_ARCH_PRAGMAS_H 25 #define PXR_BASE_ARCH_PRAGMAS_H 34 #include "pxr/base/arch/defines.h" 36 #if defined(ARCH_COMPILER_GCC) 38 #define ARCH_PRAGMA_PUSH \ 39 _Pragma("GCC diagnostic push") 41 #define ARCH_PRAGMA_POP \ 42 _Pragma("GCC diagnostic pop") 44 #define ARCH_PRAGMA(x) _Pragma(#x) 46 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \ 47 ARCH_PRAGMA(push_macro(#macro_name)) 49 #define ARCH_PRAGMA_POP_MACRO(macro_name) \ 50 ARCH_PRAGMA(pop_macro(#macro_name)) 56 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED \ 57 _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 59 #define ARCH_PRAGMA_MACRO_REDEFINITION \ 60 _Pragma("GCC diagnostic ignored \"-Wbuiltin-macro-redefined\"") 62 #define ARCH_PRAGMA_WRITE_STRINGS \ 63 _Pragma("GCC diagnostic ignored \"-Wwrite-strings\"") 65 #define ARCH_PRAGMA_UNUSED_FUNCTION \ 66 _Pragma("GCC diagnostic ignored \"-Wunused-function\"") 68 #elif defined(ARCH_COMPILER_CLANG) 70 #define ARCH_PRAGMA_PUSH \ 71 _Pragma("clang diagnostic push") 73 #define ARCH_PRAGMA_POP \ 74 _Pragma("clang diagnostic pop") 76 #define ARCH_PRAGMA(x) _Pragma(#x) 78 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \ 79 ARCH_PRAGMA(push_macro(#macro_name)) 81 #define ARCH_PRAGMA_POP_MACRO(macro_name) \ 82 ARCH_PRAGMA(pop_macro(#macro_name)) 84 #define ARCH_PRAGMA_MACRO_REDEFINITION \ 85 _Pragma("clang diagnostic ignored \"-Wbuiltin-macro-redefined\"") 87 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE \ 88 _Pragma("clang diagnostic ignored \"-Wundefined-var-template\"") 90 #define ARCH_PRAGMA_WRITE_STRINGS \ 91 _Pragma("clang diagnostic ignored \"-Wwrite-strings\"") 93 #define ARCH_PRAGMA_UNUSED_FUNCTION \ 94 _Pragma("clang diagnostic ignored \"-Wunused-function\"") 96 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION \ 97 _Pragma("clang diagnostic ignored \"-Winstantiation-after-specialization\"") 99 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND \ 100 _Pragma("clang diagnostic ignored \"-Wobjc-method-access\"") 102 #elif defined(ARCH_COMPILER_MSVC) 104 #define ARCH_PRAGMA_PUSH \ 105 __pragma(warning(push)) 107 #define ARCH_PRAGMA_POP \ 108 __pragma(warning(pop)) 110 #define ARCH_PRAGMA(x) __pragma(x) 112 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \ 113 __pragma(push_macro(#macro_name)) 115 #define ARCH_PRAGMA_POP_MACRO(macro_name) \ 116 __pragma(pop_macro(#macro_name)) 118 #define ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS \ 119 __pragma(warning(disable:4003)) 121 #define ARCH_PRAGMA_MACRO_REDEFINITION \ 122 __pragma(warning(disable:4005)) 124 #define ARCH_PRAGMA_UNUSED_FUNCTION \ 125 __pragma(warning(disable:4505)) 127 #define ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING \ 128 __pragma(warning(disable:4180)) 130 #define ARCH_PRAGMA_ZERO_SIZED_STRUCT \ 131 __pragma(warning(disable:4200)) 133 #define ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE \ 134 __pragma(warning(disable:4251)) 136 #define ARCH_PRAGMA_CONVERSION_FROM_SIZET \ 137 __pragma(warning(disable:4267)) 139 #define ARCH_PRAGMA_MAY_NOT_BE_ALIGNED \ 140 __pragma(warning(disable:4316)) 142 #define ARCH_PRAGMA_SHIFT_TO_64_BITS \ 143 __pragma(warning(disable:4334)) 145 #define ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE \ 146 __pragma(warning(disable:4624)) 148 #define ARCH_PRAGMA_DEPRECATED_POSIX_NAME \ 149 __pragma(warning(disable:4996)) 151 #define ARCH_PRAGMA_FORCING_TO_BOOL \ 152 __pragma(warning(disable:4800)) 154 #define ARCH_PRAGMA_UNSAFE_USE_OF_BOOL \ 155 __pragma(warning(disable:4804)) 157 #define ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED \ 158 __pragma(warning(disable:4146)) 162 #if !defined ARCH_PRAGMA_PUSH 163 #define ARCH_PRAGMA_PUSH 166 #if !defined ARCH_PRAGMA_POP 167 #define ARCH_PRAGMA_POP 170 #if !defined ARCH_PRAGMA 174 #if !defined ARCH_PRAGMA_PUSH_MACRO 175 #define ARCH_PRAGMA_PUSH_MACRO 178 #if !defined ARCH_PRAGMA_POP_MACRO 179 #define ARCH_PRAGMA_POP_MACRO 182 #if !defined ARCH_PRAGMA_MAYBE_UNINITIALIZED 183 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED 186 #if !defined ARCH_PRAGMA_MACRO_REDEFINITION 187 #define ARCH_PRAGMA_MACRO_REDEFINITION 190 #if !defined ARCH_PRAGMA_WRITE_STRINGS 191 #define ARCH_PRAGMA_WRITE_STRINGS 194 #if !defined ARCH_PRAGMA_UNUSED_FUNCTION 195 #define ARCH_PRAGMA_UNUSED_FUNCTION 198 #if !defined ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS 199 #define ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS 202 #if !defined ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING 203 #define ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING 206 #if !defined ARCH_PRAGMA_ZERO_SIZED_STRUCT 207 #define ARCH_PRAGMA_ZERO_SIZED_STRUCT 210 #if !defined ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE 211 #define ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE 214 #if !defined ARCH_PRAGMA_CONVERSION_FROM_SIZET 215 #define ARCH_PRAGMA_CONVERSION_FROM_SIZET 218 #if !defined ARCH_PRAGMA_MAY_NOT_BE_ALIGNED 219 #define ARCH_PRAGMA_MAY_NOT_BE_ALIGNED 222 #if !defined ARCH_PRAGMA_SHIFT_TO_64_BITS 223 #define ARCH_PRAGMA_SHIFT_TO_64_BITS 226 #if !defined ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE 227 #define ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE 230 #if !defined ARCH_PRAGMA_DEPRECATED_POSIX_NAME 231 #define ARCH_PRAGMA_DEPRECATED_POSIX_NAME 234 #if !defined ARCH_PRAGMA_FORCING_TO_BOOL 235 #define ARCH_PRAGMA_FORCING_TO_BOOL 238 #if !defined ARCH_PRAGMA_UNSAFE_USE_OF_BOOL 239 #define ARCH_PRAGMA_UNSAFE_USE_OF_BOOL 242 #if !defined ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED 243 #define ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED 246 #if !defined ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION 247 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION 250 #if !defined ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE 251 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE 254 #if !defined ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND 255 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND 258 #endif // PXR_BASE_ARCH_PRAGMAS_H