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")
48 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED \
49 _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
51 #define ARCH_PRAGMA_MACRO_REDEFINITION \
52 _Pragma("GCC diagnostic ignored \"-Wbuiltin-macro-redefined\"")
54 #define ARCH_PRAGMA_WRITE_STRINGS \
55 _Pragma("GCC diagnostic ignored \"-Wwrite-strings\"")
57 #define ARCH_PRAGMA_UNUSED_FUNCTION \
58 _Pragma("GCC diagnostic ignored \"-Wunused-function\"")
60 #elif defined(ARCH_COMPILER_CLANG)
62 #define ARCH_PRAGMA_PUSH \
63 _Pragma("clang diagnostic push")
65 #define ARCH_PRAGMA_POP \
66 _Pragma("clang diagnostic pop")
68 #define ARCH_PRAGMA_MACRO_REDEFINITION \
69 _Pragma("clang diagnostic ignored \"-Wbuiltin-macro-redefined\"")
71 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE \
72 _Pragma("clang diagnostic ignored \"-Wundefined-var-template\"")
74 #define ARCH_PRAGMA_WRITE_STRINGS \
75 _Pragma("clang diagnostic ignored \"-Wwrite-strings\"")
77 #define ARCH_PRAGMA_UNUSED_FUNCTION \
78 _Pragma("clang diagnostic ignored \"-Wunused-function\"")
80 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION \
81 _Pragma("clang diagnostic ignored \"-Winstantiation-after-specialization\"")
83 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND \
84 _Pragma("clang diagnostic ignored \"-Wobjc-method-access\"")
86 #elif defined(ARCH_COMPILER_MSVC)
88 #define ARCH_PRAGMA_PUSH \
89 __pragma(warning(push))
91 #define ARCH_PRAGMA_POP \
92 __pragma(warning(pop))
94 #define ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS \
95 __pragma(warning(disable:4003))
97 #define ARCH_PRAGMA_MACRO_REDEFINITION \
98 __pragma(warning(disable:4005))
100 #define ARCH_PRAGMA_UNUSED_FUNCTION \
101 __pragma(warning(disable:4505))
103 #define ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING \
104 __pragma(warning(disable:4180))
106 #define ARCH_PRAGMA_ZERO_SIZED_STRUCT \
107 __pragma(warning(disable:4200))
109 #define ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE \
110 __pragma(warning(disable:4251))
112 #define ARCH_PRAGMA_CONVERSION_FROM_SIZET \
113 __pragma(warning(disable:4267))
115 #define ARCH_PRAGMA_MAY_NOT_BE_ALIGNED \
116 __pragma(warning(disable:4316))
118 #define ARCH_PRAGMA_SHIFT_TO_64_BITS \
119 __pragma(warning(disable:4334))
121 #define ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE \
122 __pragma(warning(disable:4624))
124 #define ARCH_PRAGMA_DEPRECATED_POSIX_NAME \
125 __pragma(warning(disable:4996))
127 #define ARCH_PRAGMA_FORCING_TO_BOOL \
128 __pragma(warning(disable:4800))
130 #define ARCH_PRAGMA_UNSAFE_USE_OF_BOOL \
131 __pragma(warning(disable:4804))
133 #define ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED \
134 __pragma(warning(disable:4146))
138 #if !defined ARCH_PRAGMA_PUSH
139 #define ARCH_PRAGMA_PUSH
142 #if !defined ARCH_PRAGMA_POP
143 #define ARCH_PRAGMA_POP
146 #if !defined ARCH_PRAGMA_MAYBE_UNINITIALIZED
147 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED
150 #if !defined ARCH_PRAGMA_MACRO_REDEFINITION
151 #define ARCH_PRAGMA_MACRO_REDEFINITION
154 #if !defined ARCH_PRAGMA_WRITE_STRINGS
155 #define ARCH_PRAGMA_WRITE_STRINGS
158 #if !defined ARCH_PRAGMA_UNUSED_FUNCTION
159 #define ARCH_PRAGMA_UNUSED_FUNCTION
162 #if !defined ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS
163 #define ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS
166 #if !defined ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING
167 #define ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING
170 #if !defined ARCH_PRAGMA_ZERO_SIZED_STRUCT
171 #define ARCH_PRAGMA_ZERO_SIZED_STRUCT
174 #if !defined ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE
175 #define ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE
178 #if !defined ARCH_PRAGMA_CONVERSION_FROM_SIZET
179 #define ARCH_PRAGMA_CONVERSION_FROM_SIZET
182 #if !defined ARCH_PRAGMA_MAY_NOT_BE_ALIGNED
183 #define ARCH_PRAGMA_MAY_NOT_BE_ALIGNED
186 #if !defined ARCH_PRAGMA_SHIFT_TO_64_BITS
187 #define ARCH_PRAGMA_SHIFT_TO_64_BITS
190 #if !defined ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE
191 #define ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE
194 #if !defined ARCH_PRAGMA_DEPRECATED_POSIX_NAME
195 #define ARCH_PRAGMA_DEPRECATED_POSIX_NAME
198 #if !defined ARCH_PRAGMA_FORCING_TO_BOOL
199 #define ARCH_PRAGMA_FORCING_TO_BOOL
202 #if !defined ARCH_PRAGMA_UNSAFE_USE_OF_BOOL
203 #define ARCH_PRAGMA_UNSAFE_USE_OF_BOOL
206 #if !defined ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED
207 #define ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED
210 #if !defined ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION
211 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION
214 #if !defined ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE
215 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE
218 #if !defined ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND
219 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND
222 #endif // PXR_BASE_ARCH_PRAGMAS_H