📄 _mingw.h
字号:
#ifndef __MINGW_H/* * _mingw.h * * Mingw specific macros included by ALL include files. * * This file is part of the Mingw32 package. * * Contributors: * Created by Mumit Khan <khan@xraylith.wisc.edu> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#define __MINGW_H#define __MINGW32_VERSION 3.15.1#define __MINGW32_MAJOR_VERSION 3#define __MINGW32_MINOR_VERSION 15#define __MINGW32_PATCHLEVEL 1#if __GNUC__ >= 3#pragma GCC system_header#endif/* These are defined by the user (or the compiler) to specify how identifiers are imported from a DLL. __DECLSPEC_SUPPORTED Defined if dllimport attribute is supported. __MINGW_IMPORT The attribute definition to specify imported variables/functions. _CRTIMP As above. For MS compatibility. __MINGW32_VERSION Runtime version. __MINGW32_MAJOR_VERSION Runtime major version. __MINGW32_MINOR_VERSION Runtime minor version. __MINGW32_BUILD_DATE Runtime build date. Macros to enable MinGW features which deviate from standard MSVC compatible behaviour; these may be specified directly in user code, activated implicitly, (e.g. by specifying _POSIX_C_SOURCE or such), or by inclusion in __MINGW_FEATURES__: __USE_MINGW_ANSI_STDIO Select a more ANSI C99 compatible implementation of printf() and friends. Other macros: __int64 define to be long long. Using a typedef doesn't work for "unsigned __int64" All headers should include this first, and then use __DECLSPEC_SUPPORTED to choose between the old ``__imp__name'' style or __MINGW_IMPORT style declarations. *//* Manifest definitions identifying the flag bits, controlling activation * of MinGW features, as specified by the user in __MINGW_FEATURES__. */#define __MINGW_ANSI_STDIO__ 0x0000000000000001ULL/* * The following three are not yet formally supported; they are * included here, to document anticipated future usage. */#define __MINGW_LC_EXTENSIONS__ 0x0000000000000050ULL#define __MINGW_LC_MESSAGES__ 0x0000000000000010ULL#define __MINGW_LC_ENVVARS__ 0x0000000000000040ULL/* Try to avoid problems with outdated checks for GCC __attribute__ support. */#undef __attribute__#ifndef __GNUC__# ifndef __MINGW_IMPORT# define __MINGW_IMPORT __declspec(dllimport)# endif# ifndef _CRTIMP# define _CRTIMP __declspec(dllimport)# endif# define __DECLSPEC_SUPPORTED# define __attribute__(x) /* nothing */#else /* __GNUC__ */# ifdef __declspec# ifndef __MINGW_IMPORT /* Note the extern. This is needed to work around GCC's limitations in handling dllimport attribute. */# define __MINGW_IMPORT extern __attribute__ ((__dllimport__))# endif# ifndef _CRTIMP# ifdef __USE_CRTIMP# define _CRTIMP __attribute__ ((dllimport))# else# define _CRTIMP# endif# endif# define __DECLSPEC_SUPPORTED# else /* __declspec */# undef __DECLSPEC_SUPPORTED# undef __MINGW_IMPORT# ifndef _CRTIMP# define _CRTIMP# endif# endif /* __declspec *//* The next two defines can cause problems if user code adds the __cdecl attribute like so: void __attribute__ ((__cdecl)) foo(void); */# ifndef __cdecl # define __cdecl __attribute__ ((__cdecl__))# endif# ifndef __stdcall# define __stdcall __attribute__ ((__stdcall__))# endif# ifndef __int64# define __int64 long long# endif# ifndef __int32# define __int32 long# endif# ifndef __int16# define __int16 short# endif# ifndef __int8# define __int8 char# endif# ifndef __small# define __small char# endif# ifndef __hyper# define __hyper long long# endif#endif /* __GNUC__ */#if defined (__GNUC__) && defined (__GNUC_MINOR__)#define __MINGW_GNUC_PREREQ(major, minor) \ (__GNUC__ > (major) \ || (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))#else#define __MINGW_GNUC_PREREQ(major, minor) 0#endif#ifdef __cplusplus# define __CRT_INLINE inline#else# if __GNUC_STDC_INLINE__# define __CRT_INLINE extern inline __attribute__((__gnu_inline__))# else# define __CRT_INLINE extern __inline__# endif#endif#ifdef __cplusplus# define __UNUSED_PARAM(x)#else# ifdef __GNUC__# define __UNUSED_PARAM(x) x __attribute__ ((__unused__))# else# define __UNUSED_PARAM(x) x# endif#endif#ifdef __GNUC__#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))#else#define __MINGW_ATTRIB_NORETURN#define __MINGW_ATTRIB_CONST#endif#if __MINGW_GNUC_PREREQ (3, 0)#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))#else#define __MINGW_ATTRIB_MALLOC#define __MINGW_ATTRIB_PURE#endif/* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's variadiac macro facility, because variadic macros cause syntax errors with --traditional-cpp. */#if __MINGW_GNUC_PREREQ (3, 3)#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))#else#define __MINGW_ATTRIB_NONNULL(arg)#endif /* GNUC >= 3.3 */#if __MINGW_GNUC_PREREQ (3, 1)#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))#else#define __MINGW_ATTRIB_DEPRECATED#endif /* GNUC >= 3.1 */ #if __MINGW_GNUC_PREREQ (3, 3)#define __MINGW_NOTHROW __attribute__ ((__nothrow__))#else#define __MINGW_NOTHROW#endif /* GNUC >= 3.3 *//* TODO: Mark (almost) all CRT functions as __MINGW_NOTHROW. This willallow GCC to optimize away some EH unwind code, at least in DW2 case. */#ifndef __MSVCRT_VERSION__/* High byte is the major version, low byte is the minor. */# define __MSVCRT_VERSION__ 0x0600#endif/* Activation of MinGW specific extended features: */#ifndef __USE_MINGW_ANSI_STDIO/* * If user didn't specify it explicitly... */# if defined __STRICT_ANSI__ || defined _ISOC99_SOURCE \ || defined _POSIX_SOURCE || defined _POSIX_C_SOURCE \ || defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED \ || defined _GNU_SOURCE || defined _BSD_SOURCE \ || defined _SVID_SOURCE /* * but where any of these source code qualifiers are specified, * then assume ANSI I/O standards are preferred over Microsoft's... */# define __USE_MINGW_ANSI_STDIO 1# else /* * otherwise use whatever __MINGW_FEATURES__ specifies... */# define __USE_MINGW_ANSI_STDIO (__MINGW_FEATURES__ & __MINGW_ANSI_STDIO__)# endif#endif#endif /* __MINGW_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -