1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7 #ifndef _INC__MINGW_H
8 #define _INC__MINGW_H
9
10 #include "_mingw_mac.h"
11 #include "_mingw_secapi.h"
12
13 /* Include _cygwin.h if we're building a Cygwin application. */
14 #ifdef __CYGWIN__
15 #include "_cygwin.h"
16 #endif
17
18 /* Target specific macro replacement for type "long". In the Windows API,
19 the type long is always 32 bit, even if the target is 64 bit (LLP64).
20 On 64 bit Cygwin, the type long is 64 bit (LP64). So, to get the right
21 sized definitions and declarations, all usage of type long in the Windows
22 headers have to be replaced by the below defined macro __LONG32. */
23 #ifndef __LP64__ /* 32 bit target, 64 bit Mingw target */
24 #define __LONG32 long
25 #else /* 64 bit Cygwin target */
26 #define __LONG32 int
27 #endif
28
29 /* C/C++ specific language defines. */
30 #ifdef _WIN64
31 #ifdef __stdcall
32 #undef __stdcall
33 #endif
34 #define __stdcall
35 #endif
36
37 #ifndef __GNUC__
38 # ifndef __MINGW_IMPORT
39 # define __MINGW_IMPORT __declspec(dllimport)
40 # endif
41 # ifndef _CRTIMP
42 # define _CRTIMP __declspec(dllimport)
43 # endif
44 # define __DECLSPEC_SUPPORTED
45 # define __attribute__(x) /* nothing */
46 #else /* __GNUC__ */
47 # ifdef __declspec
48 # ifndef __MINGW_IMPORT
49 /* Note the extern. This is needed to work around GCC's
50 limitations in handling dllimport attribute. */
51 # define __MINGW_IMPORT extern __attribute__ ((__dllimport__))
52 # endif
53 # ifndef _CRTIMP
54 # undef __USE_CRTIMP
55 # if !defined (_CRTBLD) && !defined (_SYSCRT)
56 # define __USE_CRTIMP 1
57 # endif
58 # ifdef __USE_CRTIMP
59 # define _CRTIMP __attribute__ ((__dllimport__))
60 # else
61 # define _CRTIMP
62 # endif
63 # endif
64 # define __DECLSPEC_SUPPORTED
65 # else /* __declspec */
66 # undef __DECLSPEC_SUPPORTED
67 # undef __MINGW_IMPORT
68 # ifndef _CRTIMP
69 # define _CRTIMP
70 # endif
71 # endif /* __declspec */
72 #endif /* __GNUC__ */
73
74 #ifdef _MSC_VER
75 #define USE___UUIDOF 1
76 #else
77 #define USE___UUIDOF 0
78 #endif
79
80 #if !defined(_MSC_VER) && !defined(_inline)
81 #define _inline __inline
82 #endif
83
84 #ifdef __cplusplus
85 # define __CRT_INLINE inline
86 #elif defined(_MSC_VER)
87 # define __CRT_INLINE __inline
88 #else
89 # if ((__MINGW_GNUC_PREREQ(4, 3) || defined(__clang__)) && __STDC_VERSION__ >= 199901L)
90 # define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
91 # else
92 # define __CRT_INLINE extern __inline__
93 # endif
94 #endif
95
96 #if !defined(__MINGW_INTRIN_INLINE) && defined(__GNUC__)
97 #define __MINGW_INTRIN_INLINE extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
98 #endif
99
100 #ifndef __CYGWIN__
101 #ifdef __NO_INLINE__
102 #undef __CRT__NO_INLINE
103 #define __CRT__NO_INLINE 1
104 #endif
105 #endif
106
107 #ifdef __cplusplus
108 # define __UNUSED_PARAM(x)
109 #else
110 # ifdef __GNUC__
111 # define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
112 # else
113 # define __UNUSED_PARAM(x) x
114 # endif
115 #endif
116
117 #ifndef __GNUC__
118 # ifdef _MSC_VER
119 # define __restrict__ __restrict
120 # else
121 # define __restrict__ /* nothing */
122 # endif
123 #endif /* !__GNUC__ */
124
125 #if __MINGW_GNUC_PREREQ (3,1) && !defined __GNUG__
126 # define __restrict_arr __restrict
127 #elif defined(_MSC_VER)
128 # define __restrict_arr __restrict
129 #else
130 # ifdef __GNUC__
131 # define __restrict_arr /* Not supported in old GCC. */
132 # else
133 # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
134 # define __restrict_arr restrict
135 # else
136 # define __restrict_arr /* Not supported. */
137 # endif
138 # endif
139 #endif
140
141 #ifdef __GNUC__
142 #define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
143 #define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
144 #elif __MINGW_MSC_PREREQ(12, 0)
145 #define __MINGW_ATTRIB_NORETURN __declspec(noreturn)
146 #define __MINGW_ATTRIB_CONST
147 #else
148 #define __MINGW_ATTRIB_NORETURN
149 #define __MINGW_ATTRIB_CONST
150 #endif
151
152 #if __MINGW_GNUC_PREREQ (3, 0)
153 #define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
154 #define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
155 #elif __MINGW_MSC_PREREQ(14, 0)
156 #define __MINGW_ATTRIB_MALLOC __declspec(noalias) __declspec(restrict)
157 #define __MINGW_ATTRIB_PURE
158 #else
159 #define __MINGW_ATTRIB_MALLOC
160 #define __MINGW_ATTRIB_PURE
161 #endif
162
163 /* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's
164 variadiac macro facility, because variadic macros cause syntax
165 errors with --traditional-cpp. */
166 #if __MINGW_GNUC_PREREQ (3, 3)
167 #define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
168 #else
169 #define __MINGW_ATTRIB_NONNULL(arg)
170 #endif /* GNUC >= 3.3 */
171
172 #ifdef __GNUC__
173 #define __MINGW_ATTRIB_UNUSED __attribute__ ((__unused__))
174 #else
175 #define __MINGW_ATTRIB_UNUSED
176 #endif /* ATTRIBUTE_UNUSED */
177
178 #if __MINGW_GNUC_PREREQ (3, 1)
179 #define __MINGW_ATTRIB_USED __attribute__ ((__used__))
180 #define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
181 #if __MINGW_GNUC_PREREQ (4, 5) || defined (__clang__)
182 #define __MINGW_ATTRIB_DEPRECATED_MSG(x) __attribute__ ((__deprecated__(x)))
183 #endif
184 #elif __MINGW_MSC_PREREQ(12, 0)
185 #define __MINGW_ATTRIB_USED
186 #define __MINGW_ATTRIB_DEPRECATED __declspec(deprecated)
187 #else
188 #define __MINGW_ATTRIB_USED __MINGW_ATTRIB_UNUSED
189 #define __MINGW_ATTRIB_DEPRECATED
190 #endif /* GNUC >= 3.1 */
191
192 #ifndef __MINGW_ATTRIB_DEPRECATED_MSG
193 #define __MINGW_ATTRIB_DEPRECATED_MSG(x) __MINGW_ATTRIB_DEPRECATED
194 #endif
195
196 #if __MINGW_GNUC_PREREQ (3, 3)
197 #define __MINGW_NOTHROW __attribute__ ((__nothrow__))
198 #elif __MINGW_MSC_PREREQ(12, 0) && defined (__cplusplus)
199 #define __MINGW_NOTHROW __declspec(nothrow)
200 #else
201 #define __MINGW_NOTHROW
202 #endif
203
204 #if __MINGW_GNUC_PREREQ (4, 4)
205 #define __MINGW_ATTRIB_NO_OPTIMIZE __attribute__((__optimize__ ("0")))
206 #else
207 #define __MINGW_ATTRIB_NO_OPTIMIZE
208 #endif
209
210 #if __MINGW_GNUC_PREREQ (4, 4)
211 #define __MINGW_PRAGMA_PARAM(x) _Pragma (#x)
212 #elif __MINGW_MSC_PREREQ (13, 1)
213 #define __MINGW_PRAGMA_PARAM(x) __pragma (x)
214 #else
215 #define __MINGW_PRAGMA_PARAM(x)
216 #endif
217
218 #define __MINGW_BROKEN_INTERFACE(x) \
219 __MINGW_PRAGMA_PARAM(message ("Interface " _CRT_STRINGIZE(x) \
220 " has unverified layout."))
221
222 #ifndef __MSVCRT_VERSION__
223 /* High byte is the major version, low byte is the minor. */
224 # ifndef _UCRT
225 # define __MSVCRT_VERSION__ 0x700
226 # else
227 # define __MSVCRT_VERSION__ 0xE00
228 # endif
229 #endif
230
231
232 #ifndef _WIN32_WINNT
233 #define _WIN32_WINNT 0x0603
234 #endif
235
236 #ifndef _INT128_DEFINED
237 #define _INT128_DEFINED
238 #ifdef __GNUC__
239 #define __int8 char
240 #define __int16 short
241 #define __int32 int
242 #define __int64 long long
243 #ifdef _WIN64
244 #if (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 1)) && \
245 !defined(__SIZEOF_INT128__) /* clang >= 3.1 has __int128 but no size macro */
246 #define __SIZEOF_INT128__ 16
247 #endif
248 #ifndef __SIZEOF_INT128__
249 typedef int __int128 __attribute__ ((__mode__ (TI)));
250 #endif
251 #endif
252 #endif /* __GNUC__ */
253 #endif /* _INT128_DEFINED */
254
255 #ifdef __GNUC__
256 #define __ptr32
257 #define __ptr64
258 #ifndef __unaligned
259 #define __unaligned
260 #endif
261 #ifndef __w64
262 #define __w64
263 #endif
264 #ifdef __cplusplus
265 #define __forceinline inline __attribute__((__always_inline__))
266 #else
267 #define __forceinline extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
268 #endif /* __cplusplus */
269 #endif /* __GNUC__ */
270
271 #if !defined(_WIN32) && !defined(__CYGWIN__)
272 #error Only Win32 target is supported!
273 #endif
274
275 #ifndef __nothrow
276 #ifdef __cplusplus
277 #define __nothrow __MINGW_NOTHROW
278 #else
279 #define __nothrow
280 #endif
281 #endif /* __nothrow */
282
283 #include <vadefs.h> /* other headers depend on this include */
284
285 #ifndef _CRT_STRINGIZE
286 #define __CRT_STRINGIZE(_Value) #_Value
287 #define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
288 #endif /* _CRT_STRINGIZE */
289
290 #ifndef _CRT_WIDE
291 #define __CRT_WIDE(_String) L ## _String
292 #define _CRT_WIDE(_String) __CRT_WIDE(_String)
293 #endif /* _CRT_WIDE */
294
295 #ifndef _W64
296 #define _W64
297 #endif
298
299 #ifndef _CRTIMP_NOIA64
300 #ifdef __ia64__
301 #define _CRTIMP_NOIA64
302 #else
303 #define _CRTIMP_NOIA64 _CRTIMP
304 #endif
305 #endif /* _CRTIMP_NOIA64 */
306
307 #ifndef _CRTIMP2
308 #define _CRTIMP2 _CRTIMP
309 #endif
310
311 #ifndef _CRTIMP_ALTERNATIVE
312 #define _CRTIMP_ALTERNATIVE _CRTIMP
313 #define _CRT_ALTERNATIVE_IMPORTED
314 #endif /* _CRTIMP_ALTERNATIVE */
315
316 #ifndef _MRTIMP2
317 #define _MRTIMP2 _CRTIMP
318 #endif
319
320 /* We have to define _DLL for gcc based mingw version. This define is set
321 by VC, when DLL-based runtime is used. So, gcc based runtime just have
322 DLL-base runtime, therefore this define has to be set.
323 As our headers are possibly used by windows compiler having a static
324 C-runtime, we make this definition gnu compiler specific here. */
325 #if !defined (_DLL) && defined (__GNUC__)
326 #define _DLL
327 #endif
328
329 #ifndef _MT
330 #define _MT
331 #endif
332
333 #ifndef _MCRTIMP
334 #define _MCRTIMP _CRTIMP
335 #endif
336
337 #ifndef _CRTIMP_PURE
338 #define _CRTIMP_PURE _CRTIMP
339 #endif
340
341 #ifndef _PGLOBAL
342 #define _PGLOBAL
343 #endif
344
345 #ifndef _AGLOBAL
346 #define _AGLOBAL
347 #endif
348
349 #define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
350 #define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated)
351
352 #ifndef _CRT_INSECURE_DEPRECATE_MEMORY
353 #define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
354 #endif
355
356 #ifndef _CRT_INSECURE_DEPRECATE_GLOBALS
357 #define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement)
358 #endif
359
360 #ifndef _CRT_MANAGED_HEAP_DEPRECATE
361 #define _CRT_MANAGED_HEAP_DEPRECATE
362 #endif
363
364 #ifndef _CRT_OBSOLETE
365 #define _CRT_OBSOLETE(_NewItem)
366 #endif
367
368 #ifndef __WIDL__
369
370 #if defined (_WIN32) && !defined (_WIN64) && !defined (__MINGW_USE_VC2005_COMPAT) && !defined (_UCRT)
371 #ifndef _USE_32BIT_TIME_T
372 #define _USE_32BIT_TIME_T
373 #endif
374 #endif
375
376 #ifndef _CONST_RETURN
377 #define _CONST_RETURN
378 #endif
379
380 #ifndef UNALIGNED
381 #if defined(__ia64__) || defined(__x86_64__)
382 #define UNALIGNED __unaligned
383 #else
384 #define UNALIGNED
385 #endif
386 #endif /* UNALIGNED */
387
388 #ifndef _CRT_ALIGN
389 #ifdef _MSC_VER
390 #define _CRT_ALIGN(x) __declspec(align(x))
391 #else /* __GNUC__ */
392 #define _CRT_ALIGN(x) __attribute__ ((__aligned__ (x)))
393 #endif
394 #endif /* _CRT_ALIGN */
395
396 #endif /* __WIDL__ */
397
398 #ifndef __CRTDECL
399 #define __CRTDECL __cdecl
400 #endif
401
402 #define _ARGMAX 100
403
404 #ifndef _TRUNCATE
405 #define _TRUNCATE ((size_t)-1)
406 #endif
407
408 #ifndef _CRT_UNUSED
409 #define _CRT_UNUSED(x) (void)x
410 #endif
411
412 /* MSVC defines _NATIVE_NULLPTR_SUPPORTED when nullptr is supported. We emulate it here for GCC. */
413 #if __MINGW_GNUC_PREREQ(4, 6)
414 #if defined(__GNUC__) && (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
415 #define _NATIVE_NULLPTR_SUPPORTED
416 #endif
417 #endif
418
419 /* We are activating __USE_MINGW_ANSI_STDIO for various define indicators.
420 * printf ll modifier (unsupported by msvcrt.dll) is required by C99 and C++11 standards. */
421 #if (defined (_POSIX) || defined (_POSIX_SOURCE) || defined (_POSIX_C_SOURCE) \
422 || defined (_ISOC99_SOURCE) \
423 || (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && __MSVCRT_VERSION__ < 0xE00) \
424 || (defined (__cplusplus) && __cplusplus >= 201103L && __MSVCRT_VERSION__ < 0xE00) \
425 || defined (_XOPEN_SOURCE) || defined (_XOPEN_SOURCE_EXTENDED) \
426 || defined (_GNU_SOURCE) \
427 || defined (_SVID_SOURCE)) \
428 && !defined(__USE_MINGW_ANSI_STDIO)
429 /* Enable __USE_MINGW_ANSI_STDIO if user did _not_ specify it explicitly... */
430 # define __USE_MINGW_ANSI_STDIO 1
431 #endif
432
433 /* We are defining __USE_MINGW_ANSI_STDIO as 0 or 1 */
434 #if !defined(__USE_MINGW_ANSI_STDIO)
435 #define __USE_MINGW_ANSI_STDIO 0 /* was not defined so it should be 0 */
436 #elif (__USE_MINGW_ANSI_STDIO + 0) != 0 || (1 - __USE_MINGW_ANSI_STDIO - 1) == 2
437 #define __USE_MINGW_ANSI_STDIO 1 /* was defined as nonzero or empty so it should be 1 */
438 #else
439 #define __USE_MINGW_ANSI_STDIO 0 /* was defined as (int)zero and non-empty so it should be 0 */
440 #endif
441
442 /* _dowildcard is an int that controls the globbing of the command line.
443 * The MinGW32 (mingw.org) runtime calls it _CRT_glob, so we are adding
444 * a compatibility definition here: you can use either of _CRT_glob or
445 * _dowildcard .
446 * If _dowildcard is non-zero, the command line will be globbed: *.*
447 * will be expanded to be all files in the startup directory.
448 * In the mingw-w64 library a _dowildcard variable is defined as being
449 * 0, therefore command line globbing is DISABLED by default. To turn it
450 * on and to leave wildcard command line processing MS's globbing code,
451 * include a line in one of your source modules defining _dowildcard and
452 * setting it to -1, like so:
453 * int _dowildcard = -1;
454 */
455 #undef _CRT_glob
456 #define _CRT_glob _dowildcard
457
458
459 #if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
460 #define NONAMELESSUNION 1
461 #endif
462 #if defined(NONAMELESSSTRUCT) && \
463 !defined(NONAMELESSUNION)
464 #define NONAMELESSUNION 1
465 #endif
466 #if defined(NONAMELESSUNION) && \
467 !defined(NONAMELESSSTRUCT)
468 #define NONAMELESSSTRUCT 1
469 #endif
470
471 #ifndef __ANONYMOUS_DEFINED
472 #define __ANONYMOUS_DEFINED
473 #define _ANONYMOUS_UNION __MINGW_EXTENSION
474 #define _ANONYMOUS_STRUCT __MINGW_EXTENSION
475 #ifndef NONAMELESSUNION
476 #define _UNION_NAME(x)
477 #define _STRUCT_NAME(x)
478 #else /* NONAMELESSUNION */
479 #define _UNION_NAME(x) x
480 #define _STRUCT_NAME(x) x
481 #endif
482 #endif /* __ANONYMOUS_DEFINED */
483
484 #ifndef DUMMYUNIONNAME
485 # ifdef NONAMELESSUNION
486 # define DUMMYUNIONNAME u
487 # define DUMMYUNIONNAME1 u1 /* Wine uses this variant */
488 # define DUMMYUNIONNAME2 u2
489 # define DUMMYUNIONNAME3 u3
490 # define DUMMYUNIONNAME4 u4
491 # define DUMMYUNIONNAME5 u5
492 # define DUMMYUNIONNAME6 u6
493 # define DUMMYUNIONNAME7 u7
494 # define DUMMYUNIONNAME8 u8
495 # define DUMMYUNIONNAME9 u9
496 # else /* NONAMELESSUNION */
497 # define DUMMYUNIONNAME
498 # define DUMMYUNIONNAME1 /* Wine uses this variant */
499 # define DUMMYUNIONNAME2
500 # define DUMMYUNIONNAME3
501 # define DUMMYUNIONNAME4
502 # define DUMMYUNIONNAME5
503 # define DUMMYUNIONNAME6
504 # define DUMMYUNIONNAME7
505 # define DUMMYUNIONNAME8
506 # define DUMMYUNIONNAME9
507 # endif
508 #endif /* DUMMYUNIONNAME */
509
510 #ifndef DUMMYSTRUCTNAME
511 # ifdef NONAMELESSUNION
512 # define DUMMYSTRUCTNAME s
513 # define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */
514 # define DUMMYSTRUCTNAME2 s2
515 # define DUMMYSTRUCTNAME3 s3
516 # define DUMMYSTRUCTNAME4 s4
517 # define DUMMYSTRUCTNAME5 s5
518 # else
519 # define DUMMYSTRUCTNAME
520 # define DUMMYSTRUCTNAME1 /* Wine uses this variant */
521 # define DUMMYSTRUCTNAME2
522 # define DUMMYSTRUCTNAME3
523 # define DUMMYSTRUCTNAME4
524 # define DUMMYSTRUCTNAME5
525 # endif
526 #endif /* DUMMYSTRUCTNAME */
527
528
529 /* Macros for __uuidof template-based emulation */
530 #if defined(__cplusplus) && (USE___UUIDOF == 0)
531
532 #if __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L
533 #define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
534 extern "C++" { \
535 template<> struct __mingw_uuidof_s<type> { \
536 static constexpr IID __uuid_inst = { \
537 l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8} \
538 }; \
539 }; \
540 template<> constexpr const GUID &__mingw_uuidof<type>() { \
541 return __mingw_uuidof_s<type>::__uuid_inst; \
542 } \
543 template<> constexpr const GUID &__mingw_uuidof<type*>() { \
544 return __mingw_uuidof_s<type>::__uuid_inst; \
545 } \
546 }
547 #else
548 #define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
549 extern "C++" { \
550 template<> inline const GUID &__mingw_uuidof<type>() { \
551 static const IID __uuid_inst = {l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8}}; \
552 return __uuid_inst; \
553 } \
554 template<> inline const GUID &__mingw_uuidof<type*>() { \
555 return __mingw_uuidof<type>(); \
556 } \
557 }
558 #endif
559
560 #define __uuidof(type) __mingw_uuidof<__typeof(type)>()
561
562 #else
563
564 #define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
565
566 #endif
567
568 #ifdef __cplusplus
569 extern "C" {
570 #endif
571
572
573 #ifdef __MINGW_INTRIN_INLINE
574 #ifdef __has_builtin
575 #define __MINGW_DEBUGBREAK_IMPL !__has_builtin(__debugbreak)
576 #else
577 #define __MINGW_DEBUGBREAK_IMPL 1
578 #endif
579 #if __MINGW_DEBUGBREAK_IMPL == 1
580 void __cdecl __debugbreak(void);
__debugbreak(void)581 __MINGW_INTRIN_INLINE void __cdecl __debugbreak(void)
582 {
583 #if defined(__i386__) || defined(__x86_64__)
584 __asm__ __volatile__("int {$}3":);
585 #elif defined(__arm__)
586 __asm__ __volatile__("udf #1");
587 #elif defined(__aarch64__)
588 __asm__ __volatile__("brk #0xf000");
589 #else
590 __asm__ __volatile__("unimplemented");
591 #endif
592 }
593 #endif
594 #endif
595
596 /* mingw-w64 specific functions: */
597 const char *__mingw_get_crt_info (void);
598
599 #ifdef __cplusplus
600 }
601 #endif
602
603 #endif /* _INC__MINGW_H */
604
605 #ifndef MINGW_SDK_INIT
606 #define MINGW_SDK_INIT
607
608 /* for backward compatibility */
609 #ifndef MINGW_HAS_SECURE_API
610 #define MINGW_HAS_SECURE_API 1
611 #endif
612
613 #define __STDC_SECURE_LIB__ 200411L
614 #define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
615
616 #ifndef __WIDL__
617 #include "sdks/_mingw_ddk.h"
618 #endif
619
620 #endif /* MINGW_SDK_INIT */
621