Go to the documentation of this file.
24 #ifndef PXR_BASE_ARCH_PRAGMAS_H
25 #define PXR_BASE_ARCH_PRAGMAS_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