stdlib.h
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:4k
源码类别:

DVD

开发平台:

C/C++

  1. /* $Id$ */
  2.  
  3. /* stdlib.h: ANSI X3.159 1989 library header, section 4.10 */
  4. /* Copyright (C) Codemist Ltd. */
  5. /* Copyright (C) SGS-THOMSON Microelectronics Ltd. 1996 */
  6. #ifndef __stdlib_h
  7. #define __stdlib_h
  8. #ifdef __cplusplus
  9.  extern "C" {
  10. #endif
  11. #ifndef __size_t
  12. #  define __size_t 1
  13.    typedef unsigned int size_t;   /* from <stddef.h> */
  14. #endif
  15. #ifdef _WCHAR_T
  16. typedef unsigned short wchar_t;           /* from <stddef.h> */
  17. #undef __wchar_t
  18. #define __wchar_t 1 /* wchar_t is a keyword from EDG */
  19. #endif
  20. #ifndef __wchar_t
  21.    typedef char wchar_t;           /* from <stddef.h> */
  22. #  define __wchar_t 1
  23. #endif
  24. #ifndef NULL
  25. # ifdef __cplusplus
  26. #  define NULL 0
  27. # else
  28. #  define NULL (void *)0
  29. # endif
  30.  /* from <stddef.h> */
  31. #endif
  32. typedef struct div_t { int quot, rem; } div_t;
  33. typedef struct ldiv_t { long int quot, rem; } ldiv_t;
  34. #define EXIT_FAILURE 1
  35. #define EXIT_SUCCESS 0
  36. #define RAND_MAX 0x7fffffff
  37. #define MB_CUR_MAX 1
  38. extern double atof(const char * /*nptr*/);
  39. extern int atoi(const char * /*nptr*/);
  40. extern long int atol(const char * /*nptr*/);
  41. extern double strtod(const char * /*nptr*/, char ** /*endptr*/);
  42. extern long int strtol(const char * /*nptr*/, char ** /*endptr*/, int /*base*/);
  43. extern unsigned long int strtoul(const char * /*nptr*/,
  44.                                        char ** /*endptr*/, int /*base*/);
  45. extern int rand(void);
  46. extern void srand(unsigned int /*seed*/);
  47. extern void *calloc(size_t /*nmemb*/, size_t /*size*/);
  48. extern void free(void * /*ptr*/);
  49. extern void *malloc(size_t /*size*/);
  50. extern void *realloc(void * /*ptr*/, size_t /*size*/);
  51. extern void abort(void);
  52. extern int  atexit(void (* /*func*/)(void));
  53. extern void exit(int /*status*/);
  54. extern void *bsearch(const void *key, const void * /*base*/,
  55.               size_t /*nmemb*/, size_t /*size*/,
  56.               int (* /*compar*/)(const void *, const void *));
  57. extern void qsort(void * /*base*/, size_t /*nmemb*/, size_t /*size*/,
  58.            int (* /*compar*/)(const void *, const void *));
  59. extern int abs(int /*j*/);
  60. extern div_t div(int /*numer*/, int /*denom*/);
  61. extern long int labs(long int /*j*/);
  62. extern ldiv_t ldiv(long int /*numer*/, long int /*denom*/);
  63. extern int mblen(const char * /*s*/, size_t /*n*/);
  64. extern int mbtowc(wchar_t * /*pwc*/, const char * /*s*/, size_t /*n*/);
  65. extern int wctomb(char * /*s*/, wchar_t /*wchar*/);
  66. extern size_t mbstowcs(wchar_t * /*pwcs*/, const char * /*s*/, size_t /*n*/);
  67. extern size_t wcstombs(char * /*s*/, const wchar_t * /*pwcs*/, size_t /*n*/);
  68. extern char *getenv(const char *name);
  69. extern int system(const char *s);
  70. #ifdef __cplusplus
  71.   }
  72. #endif
  73. #ifdef __cplusplus
  74. /* End of additional code for C++ linkage versions of functions which take
  75.    function pointer arguments.
  76.  */
  77. extern "C" {
  78. typedef void _Atexfun(void);
  79. typedef int _Cmpfun(const void *, const void *);
  80. }
  81. typedef int _Cmpfun2(const void *, const void *);
  82. inline int atexit(void (*_Pfn)(void))
  83. { // register a function to call at exit
  84.   return (atexit((_Atexfun *)_Pfn));
  85. }
  86. inline void *bsearch(const void *_Key, const void *_Base, size_t _Nelem,
  87.                      size_t _Size, _Cmpfun2 *_Cmp)
  88. { // search by binary chop
  89.   return (bsearch(_Key, _Base, _Nelem, _Size, (_Cmpfun *)_Cmp));
  90. }
  91. inline void qsort(void *_Base, size_t _Nelem, size_t _Size, _Cmpfun2 *_Cmp)
  92. { // sort
  93.   qsort(_Base, _Nelem, _Size, (_Cmpfun *)_Cmp);
  94. }
  95. /* End of additional code for C++ linkage versions of functions which take
  96.    function pointer arguments.
  97.  */
  98. extern "C++" long abs(long);
  99. extern "C++" ldiv_t div(long, long);
  100. #pragma ST_nosideeffects(abs(long))
  101. #pragma ST_nosideeffects(abs(int))
  102. #pragma ST_nosideeffects(div(long,long))
  103. #pragma ST_nosideeffects(div(int,int))
  104. extern "C++" {
  105.   inline long abs(long _X) 
  106.        { return labs(_X); }
  107.   inline ldiv_t div(long _X, long _Y)
  108.        { return ldiv(_X,_Y); }
  109. }
  110. #else
  111. #pragma ST_nosideeffects(abs)
  112. #pragma ST_nosideeffects(div)
  113. #endif
  114. #pragma ST_nosideeffects(labs)
  115. #pragma ST_nosideeffects(ldiv)
  116. #endif
  117. /* end of stdlib.h */