Loading...
Searching...
No Matches
Go to the documentation of this file.
7#ifndef PXR_BASE_ARCH_PRAGMAS_H
8#define PXR_BASE_ARCH_PRAGMAS_H
17#include "pxr/base/arch/defines.h"
19#if defined(ARCH_COMPILER_GCC)
21 #define ARCH_PRAGMA_PUSH \
22 _Pragma("GCC diagnostic push")
24 #define ARCH_PRAGMA_POP \
25 _Pragma("GCC diagnostic pop")
27 #define ARCH_PRAGMA(x) _Pragma(#x)
29 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \
30 ARCH_PRAGMA(push_macro(#macro_name))
32 #define ARCH_PRAGMA_POP_MACRO(macro_name) \
33 ARCH_PRAGMA(pop_macro(#macro_name))
39 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED \
40 _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
42 #define ARCH_PRAGMA_MACRO_REDEFINITION \
43 _Pragma("GCC diagnostic ignored \"-Wbuiltin-macro-redefined\"")
45 #define ARCH_PRAGMA_WRITE_STRINGS \
46 _Pragma("GCC diagnostic ignored \"-Wwrite-strings\"")
48 #define ARCH_PRAGMA_UNUSED_FUNCTION \
49 _Pragma("GCC diagnostic ignored \"-Wunused-function\"")
51 #define ARCH_PRAGMA_STRINGOP_OVERFLOW \
52 _Pragma("GCC diagnostic ignored \"-Wstringop-overflow=\"")
54 #if ARCH_COMPILER_GCC_MAJOR >= 13
55 #define ARCH_PRAGMA_SELF_MOVE \
56 _Pragma("GCC diagnostic ignored \"-Wself-move\"")
59#elif defined(ARCH_COMPILER_CLANG)
61 #define ARCH_PRAGMA_PUSH \
62 _Pragma("clang diagnostic push")
64 #define ARCH_PRAGMA_POP \
65 _Pragma("clang diagnostic pop")
67 #define ARCH_PRAGMA(x) _Pragma(#x)
69 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \
70 ARCH_PRAGMA(push_macro(#macro_name))
72 #define ARCH_PRAGMA_POP_MACRO(macro_name) \
73 ARCH_PRAGMA(pop_macro(#macro_name))
75 #define ARCH_PRAGMA_MACRO_REDEFINITION \
76 _Pragma("clang diagnostic ignored \"-Wbuiltin-macro-redefined\"")
78 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE \
79 _Pragma("clang diagnostic ignored \"-Wundefined-var-template\"")
81 #define ARCH_PRAGMA_WRITE_STRINGS \
82 _Pragma("clang diagnostic ignored \"-Wwrite-strings\"")
84 #define ARCH_PRAGMA_UNUSED_FUNCTION \
85 _Pragma("clang diagnostic ignored \"-Wunused-function\"")
87 #define ARCH_PRAGMA_UNUSED_PRIVATE_FIELD \
88 _Pragma("clang diagnostic ignored \"-Wunused-private-field\"")
90 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION \
91 _Pragma("clang diagnostic ignored \"-Winstantiation-after-specialization\"")
93 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND \
94 _Pragma("clang diagnostic ignored \"-Wobjc-method-access\"")
96 #define ARCH_PRAGMA_SELF_MOVE \
97 _Pragma("clang diagnostic ignored \"-Wself-move\"")
99 #define ARCH_PRAGMA_SELF_ASSIGN_OVERLOADED \
100 _Pragma("clang diagnostic ignored \"-Wself-assign-overloaded\"")
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 \
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))
160 #define ARCH_PRAGMA_NON_EXPORTED_BASE_CLASS \
161 __pragma(warning(disable:4275))
165#if !defined ARCH_PRAGMA_PUSH
166 #define ARCH_PRAGMA_PUSH
169#if !defined ARCH_PRAGMA_POP
170 #define ARCH_PRAGMA_POP
173#if !defined ARCH_PRAGMA
177#if !defined ARCH_PRAGMA_PUSH_MACRO
178 #define ARCH_PRAGMA_PUSH_MACRO
181#if !defined ARCH_PRAGMA_POP_MACRO
182 #define ARCH_PRAGMA_POP_MACRO
185#if !defined ARCH_PRAGMA_MAYBE_UNINITIALIZED
186 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED
189#if !defined ARCH_PRAGMA_MACRO_REDEFINITION
190 #define ARCH_PRAGMA_MACRO_REDEFINITION
193#if !defined ARCH_PRAGMA_WRITE_STRINGS
194 #define ARCH_PRAGMA_WRITE_STRINGS
197#if !defined ARCH_PRAGMA_UNUSED_FUNCTION
198 #define ARCH_PRAGMA_UNUSED_FUNCTION
201#if !defined ARCH_PRAGMA_STRINGOP_OVERFLOW
202 #define ARCH_PRAGMA_STRINGOP_OVERFLOW
205#if !defined ARCH_PRAGMA_UNUSED_PRIVATE_FIELD
206 #define ARCH_PRAGMA_UNUSED_PRIVATE_FIELD
209#if !defined ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS
210 #define ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS
213#if !defined ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING
214 #define ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING
217#if !defined ARCH_PRAGMA_ZERO_SIZED_STRUCT
218 #define ARCH_PRAGMA_ZERO_SIZED_STRUCT
221#if !defined ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE
222 #define ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE
225#if !defined ARCH_PRAGMA_CONVERSION_FROM_SIZET
226 #define ARCH_PRAGMA_CONVERSION_FROM_SIZET
229#if !defined ARCH_PRAGMA_MAY_NOT_BE_ALIGNED
230 #define ARCH_PRAGMA_MAY_NOT_BE_ALIGNED
233#if !defined ARCH_PRAGMA_SHIFT_TO_64_BITS
234 #define ARCH_PRAGMA_SHIFT_TO_64_BITS
237#if !defined ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE
238 #define ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE
241#if !defined ARCH_PRAGMA_DEPRECATED
242 #define ARCH_PRAGMA_DEPRECATED
245#if !defined ARCH_PRAGMA_FORCING_TO_BOOL
246 #define ARCH_PRAGMA_FORCING_TO_BOOL
249#if !defined ARCH_PRAGMA_UNSAFE_USE_OF_BOOL
250 #define ARCH_PRAGMA_UNSAFE_USE_OF_BOOL
253#if !defined ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED
254 #define ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED
257#if !defined ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION
258 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION
261#if !defined ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE
262 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE
265#if !defined ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND
266 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND
269#if !defined ARCH_PRAGMA_NON_EXPORTED_BASE_CLASS
270 #define ARCH_PRAGMA_NON_EXPORTED_BASE_CLASS
273#if !defined ARCH_PRAGMA_SELF_MOVE
274 #define ARCH_PRAGMA_SELF_MOVE
277#if !defined ARCH_PRAGMA_SELF_ASSIGN_OVERLOADED
278 #define ARCH_PRAGMA_SELF_ASSIGN_OVERLOADED