iutest  1.17.1.0
iutest_pragma.hpp
[詳解]
1 //======================================================================
2 //-----------------------------------------------------------------------
13 //-----------------------------------------------------------------------
14 //======================================================================
15 #ifndef INCG_IRIS_IUTEST_PRAGMA_HPP_FBC5A1DE_3D0C_443E_84B1_5F0618DF9A6B_
16 #define INCG_IRIS_IUTEST_PRAGMA_HPP_FBC5A1DE_3D0C_443E_84B1_5F0618DF9A6B_
17 
18 //======================================================================
19 // define
20 
21 // pragma
22 #if defined(__clang__)
23 # define IUTEST_PRAGMA(x) _Pragma(#x)
24 #elif defined(__GNUC__)
25 # define IUTEST_PRAGMA(x) _Pragma(#x)
26 #elif defined(_MSC_VER) && _MSC_VER >= 1310
27 # define IUTEST_PRAGMA(x) __pragma(x)
28 #else
29 # define IUTEST_PRAGMA(x)
30 #endif
31 
32 #define IUTEST_PRAGMA_MESSAGE(m) IUTEST_PRAGMA(message (m))
33 
34 // pragma warning
35 #if defined(_MSC_VER)
36 # define IUTEST_PRAGMA_MSC_WARN_PUSH() IUTEST_PRAGMA(warning (push))
37 # define IUTEST_PRAGMA_MSC_WARN_DISABLE(x) IUTEST_PRAGMA(warning (disable: x))
38 # define IUTEST_PRAGMA_MSC_WARN_SUPPRESS(x) IUTEST_PRAGMA(warning (suppress: x))
39 # define IUTEST_PRAGMA_MSC_WARN_POP() IUTEST_PRAGMA(warning (pop))
40 #endif
41 
42 #ifndef IUTEST_PRAGMA_MSC_WARN_PUSH
43 # define IUTEST_PRAGMA_MSC_WARN_PUSH()
44 #endif
45 #ifndef IUTEST_PRAGMA_MSC_WARN_DISABLE
46 # define IUTEST_PRAGMA_MSC_WARN_DISABLE(x)
47 #endif
48 #ifndef IUTEST_PRAGMA_MSC_WARN_POP
49 # define IUTEST_PRAGMA_MSC_WARN_POP()
50 #endif
51 
52 #if defined(__clang__)
53 # define IUTEST_PRAGMA_CLANG_WARN_PUSH() IUTEST_PRAGMA(clang diagnostic push)
54 # define IUTEST_PRAGMA_CLANG_WARN_DISABLE(x) IUTEST_PRAGMA(clang diagnostic ignored x)
55 # define IUTEST_PRAGMA_CLANG_WARN_POP() IUTEST_PRAGMA(clang diagnostic pop)
56 # define IUTEST_PRAGMA_GCC_WARN_PUSH IUTEST_PRAGMA_CLANG_WARN_PUSH
57 # define IUTEST_PRAGMA_GCC_WARN_DISABLE IUTEST_PRAGMA_CLANG_WARN_DISABLE
58 # define IUTEST_PRAGMA_GCC_WARN_POP IUTEST_PRAGMA_CLANG_WARN_POP
59 #endif
60 
61 #if defined(__GNUC__)
62 # if ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
63 # define IUTEST_PRAGMA_GCC_WARN_PUSH() IUTEST_PRAGMA(GCC diagnostic push)
64 # define IUTEST_PRAGMA_GCC_WARN_DISABLE(x) IUTEST_PRAGMA(GCC diagnostic ignored x)
65 # define IUTEST_PRAGMA_GCC_WARN_POP() IUTEST_PRAGMA(GCC diagnostic pop)
66 # define IUTEST_PRAGMA_CLANG_WARN_PUSH IUTEST_PRAGMA_GCC_WARN_PUSH
67 # define IUTEST_PRAGMA_CLANG_WARN_DISABLE IUTEST_PRAGMA_GCC_WARN_DISABLE
68 # define IUTEST_PRAGMA_CLANG_WARN_POP IUTEST_PRAGMA_GCC_WARN_POP
69 # endif
70 #endif
71 
72 #ifndef IUTEST_PRAGMA_CLANG_WARN_PUSH
73 # define IUTEST_PRAGMA_CLANG_WARN_PUSH()
74 #endif
75 #ifndef IUTEST_PRAGMA_CLANG_WARN_DISABLE
76 # define IUTEST_PRAGMA_CLANG_WARN_DISABLE(x)
77 #endif
78 #ifndef IUTEST_PRAGMA_CLANG_WARN_POP
79 # define IUTEST_PRAGMA_CLANG_WARN_POP()
80 #endif
81 
82 #ifndef IUTEST_PRAGMA_GCC_WARN_PUSH
83 # define IUTEST_PRAGMA_GCC_WARN_PUSH()
84 #endif
85 #ifndef IUTEST_PRAGMA_GCC_WARN_DISABLE
86 # define IUTEST_PRAGMA_GCC_WARN_DISABLE(x)
87 #endif
88 #ifndef IUTEST_PRAGMA_GCC_WARN_POP
89 # define IUTEST_PRAGMA_GCC_WARN_POP()
90 #endif
91 
92 #if defined(__clang__)
93 # define IUTEST_PRAGMA_WARN_PUSH() IUTEST_PRAGMA_CLANG_WARN_PUSH()
94 # define IUTEST_PRAGMA_WARN_POP() IUTEST_PRAGMA_CLANG_WARN_PUSH()
95 # define IUTEST_PRAGMA_WARN_DISABLE(x) IUTEST_PRAGMA_CLANG_WARN_DISABLE(x)
96 #elif defined(__GNUC__)
97 # define IUTEST_PRAGMA_WARN_PUSH() IUTEST_PRAGMA_GCC_WARN_PUSH()
98 # define IUTEST_PRAGMA_WARN_POP() IUTEST_PRAGMA_GCC_WARN_POP()
99 # define IUTEST_PRAGMA_WARN_DISABLE(x) IUTEST_PRAGMA_GCC_WARN_DISABLE(x)
100 #elif defined(_MSC_VER)
101 # define IUTEST_PRAGMA_WARN_PUSH() IUTEST_PRAGMA_MSC_WARN_PUSH()
102 # define IUTEST_PRAGMA_WARN_POP() IUTEST_PRAGMA_MSC_WARN_POP()
103 # define IUTEST_PRAGMA_WARN_DISABLE(x)
104 #else
105 # define IUTEST_PRAGMA_WARN_PUSH()
106 # define IUTEST_PRAGMA_WARN_POP()
107 # define IUTEST_PRAGMA_WARN_DISABLE(x)
108 #endif
109 
110 
111 // pragma warning xxx
112 #if defined(_MSC_VER) && defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__
113 # if defined(__clang__)
114 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_CLANG_WARN_PUSH() \
115  IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wdeprecated-declarations")
116 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END() IUTEST_PRAGMA_CLANG_WARN_POP()
117 # else
118 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
119  IUTEST_PRAGMA_MSC_WARN_DISABLE(4996)
120 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
121 # endif
122 #else
123 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN()
124 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END()
125 #endif
126 
127 #if defined(__clang__) || defined(__GNUC__)
128 # define IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_BEGIN() \
129  IUTEST_PRAGMA_WARN_PUSH() \
130  IUTEST_PRAGMA_WARN_DISABLE("-Wunused-local-typedefs")
131 # define IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_END() \
132  IUTEST_PRAGMA_WARN_POP()
133 #else
134 # define IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_BEGIN()
135 # define IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_END()
136 #endif
137 
138 #if defined(_MSC_VER)
139 # define IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
140  IUTEST_PRAGMA_MSC_WARN_DISABLE(4702)
141 # define IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
142 #else
143 # define IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_BEGIN()
144 # define IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_END()
145 #endif
146 
147 #if defined(_MSC_VER) && _MSC_VER < 1700
148 # define IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
149  IUTEST_PRAGMA_MSC_WARN_DISABLE(4231)
150 # define IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
151 #else
152 # define IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_BEGIN()
153 # define IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_END()
154 #endif
155 
156 #if defined(_MSC_VER) && _MSC_VER < 1900
157 # define IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
158  IUTEST_PRAGMA_MSC_WARN_DISABLE(4512)
159 # define IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
160 #else
161 # define IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_BEGIN()
162 # define IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_END()
163 #endif
164 
165 #if defined(_MSC_VER) && IUTEST_HAS_CONSTEXPR
166 # define IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
167  IUTEST_PRAGMA_MSC_WARN_DISABLE(4592)
168 # define IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
169 #else
170 # define IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_BEGIN()
171 # define IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_END()
172 #endif
173 
174 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE)
175 # if defined(__clang__)
176 # define IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wsign-compare")
177 # elif defined(__GNUC__)
178 # define IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wsign-compare")
179 # elif defined(_MSC_VER)
180 # define IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE() IUTEST_PRAGMA_MSC_WARN_DISABLE(4389 4018)
181 # else
182 # define IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE()
183 # endif
184 #endif
185 
186 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY)
187 # if defined(__clang__)
188 # define IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wempty-body")
189 # elif defined(__GNUC__)
190 # define IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wempty-body")
191 # elif defined(_MSC_VER)
192 # define IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY() IUTEST_PRAGMA_MSC_WARN_DISABLE(4390)
193 # else
194 # define IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY()
195 # endif
196 #endif
197 
198 #if !defined(IUTEST_PRAGMA_WARN_FLOAT_EQUAL)
199 # if defined(__clang__)
200 # define IUTEST_PRAGMA_WARN_FLOAT_EQUAL() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wfloat-equal")
201 # elif defined(__GNUC__)
202 # define IUTEST_PRAGMA_WARN_FLOAT_EQUAL() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wfloat-equal")
203 # elif defined(_MSC_VER)
204 # define IUTEST_PRAGMA_WARN_FLOAT_EQUAL() // IUTEST_PRAGMA_MSC_WARN_DISABLE(?)
205 # else
206 # define IUTEST_PRAGMA_WARN_FLOAT_EQUAL()
207 # endif
208 #endif
209 
210 #if !defined(IUTEST_PRAGMA_WARN_FORMAT_NONLITERAL)
211 # if defined(__clang__)
212 # define IUTEST_PRAGMA_WARN_FORMAT_NONLITERAL() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wformat-nonliteral")
213 # elif defined(__GNUC__)
214 # define IUTEST_PRAGMA_WARN_FORMAT_NONLITERAL() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wformat-nonliteral")
215 # elif defined(_MSC_VER)
216 # define IUTEST_PRAGMA_WARN_FORMAT_NONLITERAL() // IUTEST_PRAGMA_MSC_WARN_DISABLE(?)
217 # else
218 # define IUTEST_PRAGMA_WARN_FORMAT_NONLITERAL()
219 # endif
220 #endif
221 
222 #if !defined(IUTEST_PRAGMA_WARN_CAST_ALIGN)
223 # if defined(__clang__)
224 # define IUTEST_PRAGMA_WARN_CAST_ALIGN() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wcast-align")
225 # elif defined(__GNUC__)
226 # define IUTEST_PRAGMA_WARN_CAST_ALIGN() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wcast-align")
227 # elif defined(_MSC_VER)
228 # define IUTEST_PRAGMA_WARN_CAST_ALIGN() // IUTEST_PRAGMA_MSC_WARN_DISABLE(?)
229 # else
230 # define IUTEST_PRAGMA_WARN_CAST_ALIGN()
231 # endif
232 #endif
233 
234 #if !defined(IUTEST_PRAGMA_WARN_CXX14_CONSTEXPR_NOT_IMPLY_CONST)
235 # if defined(__clang__)
236 # define IUTEST_PRAGMA_WARN_CXX14_CONSTEXPR_NOT_IMPLY_CONST()
237 # elif defined(__GNUC__)
238 # define IUTEST_PRAGMA_WARN_CXX14_CONSTEXPR_NOT_IMPLY_CONST()
239 # elif defined(_MSC_VER)
240 # define IUTEST_PRAGMA_WARN_CXX14_CONSTEXPR_NOT_IMPLY_CONST() IUTEST_PRAGMA_MSC_WARN_DISABLE(4814)
241 # else
242 # define IUTEST_PRAGMA_WARN_CXX14_CONSTEXPR_NOT_IMPLY_CONST()
243 # endif
244 #endif
245 
246 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE)
247 # if defined(__clang__)
248 # if (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ > 0))
249 # define IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wdangling-else")
250 # endif
251 # elif defined(__GNUC__)
252 # if (__GNUC__ > 6)
253 # define IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wdangling-else")
254 # endif
255 # elif defined(_MSC_VER)
256 # define IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE()
257 # endif
258 #endif
259 
260 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE)
261 # define IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE()
262 #endif
263 
264 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE)
265 # if defined(__GNUC__) && (__GNUC__ > 6)
266 # define IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wnoexcept-type")
267 # endif
268 #endif
269 
270 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE)
271 # define IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE()
272 #endif
273 
274 #endif // INCG_IRIS_IUTEST_PRAGMA_HPP_FBC5A1DE_3D0C_443E_84B1_5F0618DF9A6B_
iutest_config.hpp
iris unit test config