📄 stdlib.h
字号:
/***
*stdlib.h - declarations/definitions for commonly used library functions
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
* This include file contains the function declarations for commonly
* used library functions which either don't fit somewhere else, or,
* cannot be declared in the normal place for other reasons.
* [ANSI]
*
* [Public]
*
****/
#pragma once
#ifndef _INC_STDLIB
#define _INC_STDLIB
#include <crtdefs.h>
#include <limits.h>
/*
* Currently, all MS C compilers for Win32 platforms default to 8 byte
* alignment.
*/
#pragma pack(push,_CRT_PACKING)
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else /* __cplusplus */
#define NULL ((void *)0)
#endif /* __cplusplus */
#endif /* NULL */
/* Definition of the argument values for the exit() function */
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
#ifndef _ONEXIT_T_DEFINED
#if !defined (_M_CEE_PURE)
typedef int (__cdecl * _onexit_t)(void);
#else /* !defined (_M_CEE_PURE) */
typedef int (__clrcall * _onexit_t)(void);
typedef _onexit_t _onexit_m_t;
#endif /* !defined (_M_CEE_PURE) */
#if defined (_M_CEE_MIXED)
typedef int (__clrcall * _onexit_m_t)(void);
#endif /* defined (_M_CEE_MIXED) */
#if !__STDC__
/* Non-ANSI name for compatibility */
#define onexit_t _onexit_t
#endif /* !__STDC__ */
#define _ONEXIT_T_DEFINED
#endif /* _ONEXIT_T_DEFINED */
/* Data structure definitions for div and ldiv runtimes. */
#ifndef _DIV_T_DEFINED
typedef struct _div_t {
int quot;
int rem;
} div_t;
typedef struct _ldiv_t {
long quot;
long rem;
} ldiv_t;
typedef struct _lldiv_t {
long long quot;
long long rem;
} lldiv_t;
#define _DIV_T_DEFINED
#endif /* _DIV_T_DEFINED */
/*
* structs used to fool the compiler into not generating floating point
* instructions when copying and pushing [long] double values
*/
#ifndef _CRT_DOUBLE_DEC
#ifndef _LDSUPPORT
#pragma pack(4)
typedef struct {
unsigned char ld[10];
} _LDOUBLE;
#pragma pack()
#define _PTR_LD(x) ((unsigned char *)(&(x)->ld))
#else /* _LDSUPPORT */
/* push and pop long, which is #defined as __int64 by a spec2k test */
#pragma push_macro("long")
#undef long
typedef long double _LDOUBLE;
#pragma pop_macro("long")
#define _PTR_LD(x) ((unsigned char *)(x))
#endif /* _LDSUPPORT */
typedef struct {
double x;
} _CRT_DOUBLE;
typedef struct {
float f;
} _CRT_FLOAT;
/* push and pop long, which is #defined as __int64 by a spec2k test */
#pragma push_macro("long")
#undef long
typedef struct {
/*
* Assume there is a long double type
*/
long double x;
} _LONGDOUBLE;
#pragma pop_macro("long")
#pragma pack(4)
typedef struct {
unsigned char ld12[12];
} _LDBL12;
#pragma pack()
#define _CRT_DOUBLE_DEC
#endif /* _CRT_DOUBLE_DEC */
/* Maximum value that can be returned by the rand function. */
#define RAND_MAX 0x7fff
/*
* Maximum number of bytes in multi-byte character in the current locale
* (also defined in ctype.h).
*/
#ifndef MB_CUR_MAX
#ifndef _INTERNAL_IFSTRIP_
#if defined (_DLL) && defined (_M_IX86)
/* Retained for compatibility with VC++ 5.0 and earlier versions */
_CRTIMP int * __cdecl __p___mb_cur_max(void);
#endif /* defined (_DLL) && defined (_M_IX86) */
#define __MB_CUR_MAX(ptloci) (ptloci)->mb_cur_max
#endif /* _INTERNAL_IFSTRIP_ */
#define MB_CUR_MAX ___mb_cur_max_func()
#if !defined (_M_CEE_PURE)
_CRTIMP extern int __mb_cur_max;
#else /* !defined (_M_CEE_PURE) */
_CRTIMP int* __cdecl __p___mb_cur_max(void);
#define __mb_cur_max (*__p___mb_cur_max())
#endif /* !defined (_M_CEE_PURE) */
_CRTIMP int __cdecl ___mb_cur_max_func(void);
_CRTIMP int __cdecl ___mb_cur_max_l_func(_locale_t);
#endif /* MB_CUR_MAX */
/* Minimum and maximum macros */
#define __max(a,b) (((a) > (b)) ? (a) : (b))
#define __min(a,b) (((a) < (b)) ? (a) : (b))
/*
* Sizes for buffers used by the _makepath() and _splitpath() functions.
* note that the sizes include space for 0-terminator
*/
#define _MAX_PATH 260 /* max. length of full pathname */
#define _MAX_DRIVE 3 /* max. length of drive component */
#define _MAX_DIR 256 /* max. length of path component */
#define _MAX_FNAME 256 /* max. length of file name component */
#define _MAX_EXT 256 /* max. length of extension component */
/*
* Argument values for _set_error_mode().
*/
#define _OUT_TO_DEFAULT 0
#define _OUT_TO_STDERR 1
#define _OUT_TO_MSGBOX 2
#define _REPORT_ERRMODE 3
/*
* Argument values for _set_abort_behavior().
*/
#define _WRITE_ABORT_MSG 0x1 /* debug only, has no effect in release */
#define _CALL_REPORTFAULT 0x2
/*
* Sizes for buffers used by the getenv/putenv family of functions.
*/
#define _MAX_ENV 32767
#if !defined (_M_CEE_PURE)
/* a purecall handler procedure. Never returns normally */
typedef void (__cdecl *_purecall_handler)(void);
/* establishes a purecall handler for the process */
_CRTIMP _purecall_handler __cdecl _set_purecall_handler(_In_opt_ _purecall_handler _Handler);
_CRTIMP _purecall_handler __cdecl _get_purecall_handler(void);
#endif /* !defined (_M_CEE_PURE) */
#if defined (__cplusplus)
extern "C++"
{
#if defined (_M_CEE_PURE)
typedef void (__clrcall *_purecall_handler)(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -