📄 stdlib.h
字号:
/* * stdlib.h * * Definitions for common types, variables, and functions. * * This file is part of the Mingw32 package. * * Contributors: * Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp> * * 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 * DISCLAMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * $Revision: 1.16 $ * $Author: khan $ * $Date: 1999/06/15 00:47:30 $ * */#ifndef _STDLIB_H_#define _STDLIB_H_/* All the headers include this file. */#include <_mingw.h>#define __need_size_t#define __need_wchar_t#define __need_NULL#ifndef RC_INVOKED#include <stddef.h>#endif /* RC_INVOKED *//* * RAND_MAX is the maximum value that may be returned by rand. * The minimum is zero. */#define RAND_MAX 0x7FFF/* * These values may be used as exit status codes. */#define EXIT_SUCCESS 0#define EXIT_FAILURE -1/* * Definitions for path name functions. * NOTE: All of these values have simply been chosen to be conservatively high. * Remember that with long file names we can no longer depend on * extensions being short. */#ifndef __STRICT_ANSI__#ifndef MAX_PATH#define MAX_PATH (260)#endif#define _MAX_PATH MAX_PATH#define _MAX_DRIVE (3)#define _MAX_DIR 256#define _MAX_FNAME 256#define _MAX_EXT 256#endif /* Not __STRICT_ANSI__ */#ifndef RC_INVOKED#ifdef __cplusplusextern "C" {#endif/* * This seems like a convenient place to declare these variables, which * give programs using WinMain (or main for that matter) access to main-ish * argc and argv. environ is a pointer to a table of environment variables. * NOTE: Strings in _argv and environ are ANSI strings. */extern int _argc;extern char** _argv;/* imports from runtime dll of the above variables */#ifdef __MSVCRT__extern int* __p___argc(void);extern char*** __p___argv(void);extern wchar_t*** __p___wargv(void);#define __argc (*__p___argc())#define __argv (*__p___argv())#define __wargv (*__p___wargv())#else /* !MSVCRT */#ifndef __DECLSPEC_SUPPORTEDextern int* __imp___argc_dll;extern char*** __imp___argv_dll;#define __argc (*__imp___argc_dll)#define __argv (*__imp___argv_dll)#else /* __DECLSPEC_SUPPORTED */__MINGW_IMPORT int __argc_dll;__MINGW_IMPORT char** __argv_dll;#define __argc __argc_dll#define __argv __argv_dll#endif /* __DECLSPEC_SUPPORTED */#endif /* __MSVCRT *//* * MS likes to declare errno in stdlib.h as well. */#ifdef _UWIN#undef errnoextern int errno;#elseint* _errno();#define errno (*_errno())#endifint* __doserrno();#define _doserrno (*__doserrno())/* * Use environ from the DLL, not as a global. */#ifdef __MSVCRT__ extern char *** __p__environ(); extern wchar_t *** __p__wenviron();# define _environ (*__p__environ())# define _wenviron (*__p__wenviron())#else /* ! __MSVCRT__ */# ifndef __DECLSPEC_SUPPORTED extern char *** __imp__environ_dll;# define _environ (*__imp__environ_dll)# else /* __DECLSPEC_SUPPORTED */ __MINGW_IMPORT char ** _environ_dll;# define _environ _environ_dll# endif /* __DECLSPEC_SUPPORTED */#endif /* ! __MSVCRT__ */#define environ _environ#ifdef __MSVCRT__/* One of the MSVCRTxx libraries */#ifndef __DECLSPEC_SUPPORTED extern int* __imp__sys_nerr;# define sys_nerr (*__imp__sys_nerr)#else /* __DECLSPEC_SUPPORTED */ __MINGW_IMPORT int _sys_nerr;# ifndef _UWIN# define sys_nerr _sys_nerr# endif /* _UWIN */#endif /* __DECLSPEC_SUPPORTED */#else /* ! __MSVCRT__ *//* CRTDLL run time library */#ifndef __DECLSPEC_SUPPORTED extern int* __imp__sys_nerr_dll;# define sys_nerr (*__imp__sys_nerr_dll)#else /* __DECLSPEC_SUPPORTED */ __MINGW_IMPORT int _sys_nerr_dll;# define sys_nerr _sys_nerr_dll#endif /* __DECLSPEC_SUPPORTED */#endif /* ! __MSVCRT__ */#ifndef __DECLSPEC_SUPPORTEDextern char*** __imp__sys_errlist;#define sys_errlist (*__imp__sys_errlist)#else /* __DECLSPEC_SUPPORTED */__MINGW_IMPORT char* _sys_errlist[];#ifndef _UWIN#define sys_errlist _sys_errlist#endif /* _UWIN */#endif /* __DECLSPEC_SUPPORTED *//* * OS version and such constants. */#ifndef __STRICT_ANSI__#ifdef __MSVCRT__/* msvcrtxx.dll */extern unsigned int* __p__osver();extern unsigned int* __p__winver();extern unsigned int* __p__winmajor();extern unsigned int* __p__winminor();#define _osver (*__p__osver())#define _winver (*__p__winver())#define _winmajor (*__p__winmajor())#define _winminor (*__p__winminor())#else/* Not msvcrtxx.dll, thus crtdll.dll */#ifndef __DECLSPEC_SUPPORTEDextern unsigned int* _imp___osver_dll;extern unsigned int* _imp___winver_dll;extern unsigned int* _imp___winmajor_dll;extern unsigned int* _imp___winminor_dll;#define _osver (*_imp___osver_dll)#define _winver (*_imp___winver_dll)#define _winmajor (*_imp___winmajor_dll)#define _winminor (*_imp___winminor_dll)#else /* __DECLSPEC_SUPPORTED */__MINGW_IMPORT unsigned int _osver_dll;__MINGW_IMPORT unsigned int _winver_dll;__MINGW_IMPORT unsigned int _winmajor_dll;__MINGW_IMPORT unsigned int _winminor_dll;#define _osver _osver_dll#define _winver _winver_dll#define _winmajor _winmajor_dll#define _winminor _winminor_dll#endif /* __DECLSPEC_SUPPORTED */#endif#endif /* Not __STRICT_ANSI__ */#ifdef __GNUC__#define _ATTRIB_NORETURN __attribute__ ((noreturn))#else /* Not __GNUC__ */#define _ATTRIB_NORETURN#endif /* __GNUC__ */double atof (const char* szNumber);int atoi (const char* szNumber);long atol (const char* szNumber);double strtod (const char* szNumber, char** pszAfterNumber);double wcstod (const wchar_t* wsNumber, wchar_t** pwsAfterNumber);long strtol (const char* szNumber, char** pszAfterNumber, int nBase);long wcstol (const wchar_t* wsNumber, wchar_t** pwsAfterNumber, int nBase);unsigned long strtoul (const char* szNumber, char** pszAfterNumber, int nBase);unsigned long wcstoul (const wchar_t* wsNumber, wchar_t** pwsAfterNumber, int nBase);size_t wcstombs (char* mbsDest, const wchar_t* wsConvert, size_t size);int wctomb (char* mbDest, wchar_t wc);int mblen (const char* mbs, size_t sizeString);size_t mbstowcs (wchar_t* wcaDest, const char* mbsConvert, size_t size);int mbtowc (wchar_t* wcDest, const char* mbConvert, size_t size);int rand ();void srand (unsigned int nSeed);void* calloc (size_t sizeObjCnt, size_t sizeObject);void* malloc (size_t sizeObject);void* realloc (void* pObject, size_t sizeNew);void free (void* pObject);void abort () _ATTRIB_NORETURN;void exit (int nStatus) _ATTRIB_NORETURN;int atexit (void (*pfuncExitProcessing)(void));int system (const char* szCommand);char* getenv (const char* szVarName);typedef int (*_pfunccmp_t)(const void*, const void*);void* bsearch (const void* pKey, const void* pBase, size_t cntObjects, size_t sizeObject, _pfunccmp_t pfuncCmp);void qsort (const void* pBase, size_t cntObjects, size_t sizeObject, _pfunccmp_t pfuncCmp);int abs (int n);long labs (long n);/* * div_t and ldiv_t are structures used to return the results of div and * ldiv. * * NOTE: div and ldiv appear not to work correctly unless * -fno-pcc-struct-return is specified. This is included in the * mingw32 specs file. */typedef struct { int quot, rem; } div_t;typedef struct { long quot, rem; } ldiv_t;div_t div (int nNumerator, int nDenominator);ldiv_t ldiv (long lNumerator, long lDenominator);#ifndef __STRICT_ANSI__/* * NOTE: Officially the three following functions are obsolete. The Win32 API * functions SetErrorMode, Beep and Sleep are their replacements. */void _beep (unsigned int, unsigned int);void _seterrormode (int nMode);void _sleep (unsigned long ulTime);void _exit (int nStatus) _ATTRIB_NORETURN;int _putenv (const char* szNameEqValue);void _searchenv (const char* szFileName, const char* szVar, char* szFullPathBuf);char* _itoa (int nValue, char* sz, int nRadix);char* _ltoa (long lnValue, char* sz, int nRadix);char* _ecvt (double dValue, int nDig, int* pnDec, int* pnSign);char* _fcvt (double dValue, int nDig, int* pnDec, int* pnSign);char* _gcvt (double dValue, int nDec, char* caBuf);void _makepath (char* caPath, const char* szDrive, const char* szDir, const char* szName, const char* szExtension);void _splitpath (const char* szPath, char* caDrive, char* caDir, char* caName, char* caExtension);char* _fullpath (char* caBuf, const char* szPath, size_t sizeMax);int _wtoi (const wchar_t *);long _wtol (const wchar_t *);char* _i64toa(__int64, char *, int);char* _ui64toa(unsigned __int64, char *, int);__int64 _atoi64(const char *);wchar_t* _i64tow(__int64, wchar_t *, int);wchar_t* _ui64tow(unsigned __int64, wchar_t *, int);__int64 _wtoi64(const wchar_t *);#ifndef _NO_OLDNAMESint putenv (const char* szNameEqValue);void searchenv (const char* szFileName, const char* szVar, char* szFullPathBuf);char* itoa (int nValue, char* sz, int nRadix);char* ltoa (long lnValue, char* sz, int nRadix);#ifndef _UWINchar* ecvt (double dValue, int nDig, int* pnDec, int* pnSign);char* fcvt (double dValue, int nDig, int* pnDec, int* pnSign);char* gcvt (double dValue, int nDec, char* caBuf);#endif /* _UWIN */#endif /* Not _NO_OLDNAMES */#endif /* Not __STRICT_ANSI__ *//* * Undefine the no return attribute used in some function definitions */#undef _ATTRIB_NORETURN#ifdef __cplusplus}#endif#endif /* Not RC_INVOKED */#endif /* Not _STDLIB_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -