Loading...
Searching...
No Matches
Go to the documentation of this file.
8#ifndef PXR_ARCH_PRAGMAS_H
9#define PXR_ARCH_PRAGMAS_H
20#if defined(ARCH_COMPILER_GCC)
22 #define ARCH_PRAGMA_PUSH \
23 _Pragma("GCC diagnostic push")
25 #define ARCH_PRAGMA_POP \
26 _Pragma("GCC diagnostic pop")
28 #define ARCH_PRAGMA(x) _Pragma(#x)
30 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \
31 ARCH_PRAGMA(push_macro(#macro_name))
33 #define ARCH_PRAGMA_POP_MACRO(macro_name) \
34 ARCH_PRAGMA(pop_macro(#macro_name))
40 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED \
41 _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
43 #define ARCH_PRAGMA_MACRO_REDEFINITION \
44 _Pragma("GCC diagnostic ignored \"-Wbuiltin-macro-redefined\"")
46 #define ARCH_PRAGMA_WRITE_STRINGS \
47 _Pragma("GCC diagnostic ignored \"-Wwrite-strings\"")
49 #define ARCH_PRAGMA_UNUSED_FUNCTION \
50 _Pragma("GCC diagnostic ignored \"-Wunused-function\"")
52 #define ARCH_PRAGMA_STRINGOP_OVERFLOW \
53 _Pragma("GCC diagnostic ignored \"-Wstringop-overflow=\"")
55#elif defined(ARCH_COMPILER_CLANG)
57 #define ARCH_PRAGMA_PUSH \
58 _Pragma("clang diagnostic push")
60 #define ARCH_PRAGMA_POP \
61 _Pragma("clang diagnostic pop")
63 #define ARCH_PRAGMA(x) _Pragma(#x)
65 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \
66 ARCH_PRAGMA(push_macro(#macro_name))
68 #define ARCH_PRAGMA_POP_MACRO(macro_name) \
69 ARCH_PRAGMA(pop_macro(#macro_name))
71 #define ARCH_PRAGMA_MACRO_REDEFINITION \
72 _Pragma("clang diagnostic ignored \"-Wbuiltin-macro-redefined\"")
74 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE \
75 _Pragma("clang diagnostic ignored \"-Wundefined-var-template\"")
77 #define ARCH_PRAGMA_WRITE_STRINGS \
78 _Pragma("clang diagnostic ignored \"-Wwrite-strings\"")
80 #define ARCH_PRAGMA_UNUSED_FUNCTION \
81 _Pragma("clang diagnostic ignored \"-Wunused-function\"")
83 #define ARCH_PRAGMA_UNUSED_PRIVATE_FIELD \
84 _Pragma("clang diagnostic ignored \"-Wunused-private-field\"")
86 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION \
87 _Pragma("clang diagnostic ignored \"-Winstantiation-after-specialization\"")
89 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND \
90 _Pragma("clang diagnostic ignored \"-Wobjc-method-access\"")
92#elif defined(ARCH_COMPILER_MSVC)
94 #define ARCH_PRAGMA_PUSH \
95 __pragma(warning(push))
97 #define ARCH_PRAGMA_POP \
98 __pragma(warning(pop))
100 #define ARCH_PRAGMA(x) __pragma(x)
102 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \
103 __pragma(push_macro(#macro_name))
105 #define ARCH_PRAGMA_POP_MACRO(macro_name) \
106 __pragma(pop_macro(#macro_name))
108 #define ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS \
109 __pragma(warning(disable:4003))
111 #define ARCH_PRAGMA_MACRO_REDEFINITION \
112 __pragma(warning(disable:4005))
114 #define ARCH_PRAGMA_UNUSED_FUNCTION \
115 __pragma(warning(disable:4505))
117 #define ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING \
118 __pragma(warning(disable:4180))
120 #define ARCH_PRAGMA_ZERO_SIZED_STRUCT \
121 __pragma(warning(disable:4200))
123 #define ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE \
124 __pragma(warning(disable:4251))
126 #define ARCH_PRAGMA_CONVERSION_FROM_SIZET \
127 __pragma(warning(disable:4267))
129 #define ARCH_PRAGMA_MAY_NOT_BE_ALIGNED \
130 __pragma(warning(disable:4316))
132 #define ARCH_PRAGMA_SHIFT_TO_64_BITS \
133 __pragma(warning(disable:4334))
135 #define ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE \
136 __pragma(warning(disable:4624))
138 #define ARCH_PRAGMA_DEPRECATED_POSIX_NAME \
139 __pragma(warning(disable:4996))
141 #define ARCH_PRAGMA_FORCING_TO_BOOL \
142 __pragma(warning(disable:4800))
144 #define ARCH_PRAGMA_UNSAFE_USE_OF_BOOL \
145 __pragma(warning(disable:4804))
147 #define ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED \
148 __pragma(warning(disable:4146))
152#if !defined ARCH_PRAGMA_PUSH
153 #define ARCH_PRAGMA_PUSH
156#if !defined ARCH_PRAGMA_POP
157 #define ARCH_PRAGMA_POP
160#if !defined ARCH_PRAGMA
164#if !defined ARCH_PRAGMA_PUSH_MACRO
165 #define ARCH_PRAGMA_PUSH_MACRO
168#if !defined ARCH_PRAGMA_POP_MACRO
169 #define ARCH_PRAGMA_POP_MACRO
172#if !defined ARCH_PRAGMA_MAYBE_UNINITIALIZED
173 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED
176#if !defined ARCH_PRAGMA_MACRO_REDEFINITION
177 #define ARCH_PRAGMA_MACRO_REDEFINITION
180#if !defined ARCH_PRAGMA_WRITE_STRINGS
181 #define ARCH_PRAGMA_WRITE_STRINGS
184#if !defined ARCH_PRAGMA_UNUSED_FUNCTION
185 #define ARCH_PRAGMA_UNUSED_FUNCTION
188#if !defined ARCH_PRAGMA_STRINGOP_OVERFLOW
189 #define ARCH_PRAGMA_STRINGOP_OVERFLOW
192#if !defined ARCH_PRAGMA_UNUSED_PRIVATE_FIELD
193 #define ARCH_PRAGMA_UNUSED_PRIVATE_FIELD
196#if !defined ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS
197 #define ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS
200#if !defined ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING
201 #define ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING
204#if !defined ARCH_PRAGMA_ZERO_SIZED_STRUCT
205 #define ARCH_PRAGMA_ZERO_SIZED_STRUCT
208#if !defined ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE
209 #define ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE
212#if !defined ARCH_PRAGMA_CONVERSION_FROM_SIZET
213 #define ARCH_PRAGMA_CONVERSION_FROM_SIZET
216#if !defined ARCH_PRAGMA_MAY_NOT_BE_ALIGNED
217 #define ARCH_PRAGMA_MAY_NOT_BE_ALIGNED
220#if !defined ARCH_PRAGMA_SHIFT_TO_64_BITS
221 #define ARCH_PRAGMA_SHIFT_TO_64_BITS
224#if !defined ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE
225 #define ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE
228#if !defined ARCH_PRAGMA_DEPRECATED_POSIX_NAME
229 #define ARCH_PRAGMA_DEPRECATED_POSIX_NAME
232#if !defined ARCH_PRAGMA_FORCING_TO_BOOL
233 #define ARCH_PRAGMA_FORCING_TO_BOOL
236#if !defined ARCH_PRAGMA_UNSAFE_USE_OF_BOOL
237 #define ARCH_PRAGMA_UNSAFE_USE_OF_BOOL
240#if !defined ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED
241 #define ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED
244#if !defined ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION
245 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION
248#if !defined ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE
249 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE
252#if !defined ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND
253 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND