Keil C51 自带部分基础函数库。要使用,就必须先包含其对应的头文件。格式:
库函数是比较多的,要全部记住是比较困难的,也没必要全部记住它。要用记不住的库函数,可以打开库函数查看。将鼠标光标移动到包含的头文件上,点击鼠标右键,在弹出菜单中点击打开对应头文件即可。示例:
下面分比别列出以上头文件内容,供参考。
#ifndef __MATH_H__
#define __MATH_H__
#if defined __CX2__ && (__CX2__ >= 558 || __CX2__ == 556 && __CX2_MINOR__ >= 207)
#ifndef HUGE_VAL
#define HUGE_VAL __inf__
#endif // HUGE_VAL
#ifndef NAN
#define NAN __nan__
#endif // NAN
#pragma SAVE
#pragma FUNCTIONS(STATIC)
/* intrinsic functions are reentrant, but need static attribute */
extern int abs (int val); //计算并返回int val的绝对值
#pragma RESTORE
#endif
#pragma SAVE
#pragma REGPARMS
#if !defined (__CX2__)
extern char cabs (char val); //计算并返回char val的绝对值
extern int abs (int val); //计算并返回int val的绝对值
extern long labs (long val); //计算并返回long val的绝对值
#endif
extern float fabs (float val); //计算并返回float val的绝对值
extern float sqrt (float val); //计算并返回float val的正平方根
extern float exp (float val); //算并返回浮点数float val的指数函数
extern float log (float val); //计算并返回浮点数float val的自然对数
extern float log10 (float val); //计算并返回浮点数val以10为底的对数
extern float sin (float val); //计算并返回float val的正弦值,x是弧度值
extern float cos (float val); //计算并返回float val的余弦值,x是弧度值
extern float tan (float val); //计算并返回float val的正切值,x是弧度值
extern float asin (float val); //计算并返回float val的反正弦值,返回值为弧度值
extern float acos (float val); //计算并返回float val的反余弦值,返回值为弧度值
extern float atan (float val); //计算并返回float val的反正切值,返回值为弧度值
extern float sinh (float val); //计算并返回float val的双曲正弦值
extern float cosh (float val); //计算并返回float val的双曲余弦值
extern float tanh (float val); //计算并返回float val的双曲正切值
extern float atan2 (float y, float x); //计算并返回y/x的反正切值,值域为-π~+π
extern float ceil (float val); //计算并返回一个不小于float val的最小整数,即向上取整
extern float floor (float val); //计算并返回一个不大于float val的最小整数
extern float modf (float val, float *n); //将浮点数x分成整数和小数部分,两者都含有与x相同的符号,整数部分放入*ip,小数部分作为返回值
extern float fmod (float x, float y); //浮点数求余,返回x/y的余数
extern float pow (float x, float y); //返回x的y次方的值
#if defined (__CX2__)
extern float frexp (float val, int *exp);
extern float ldexp (float val, int exp);
#endif
#pragma RESTORE
#endif
/*--------------------------------------------------------------------------
STDLIB.H
Standard functions.
Copyright (c) 1988-2008 Keil Elektronik GmbH and Keil Software, Inc.
Copyright (c) 2008-2016 ARM Germany GmbH
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __STDLIB_H__
#define __STDLIB_H__
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned int size_t;
#endif
#ifndef NULL
#define NULL ((void *)0)
#endif
#ifndef _WCHAR_T_DEFINED_
#define _WCHAR_T_DEFINED_
typedef char wchar_t;
#endif
#if defined (__CX2__)
#ifndef _DIV_T_DEFINED
typedef struct _div_t {
int quot;
int rem;
} div_t;
typedef struct _ldiv_t {
long quot;
long rem;
} ldiv_t;
#define _DIV_T_DEFINED
#endif // _DIV_T_DEFINED
#endif // __CX2__
#ifndef RAND_MAX
#define RAND_MAX 32767u
#endif
#if defined (__CX2__)
#pragma SAVE
#pragma FUNCTIONS(STATIC)
/* intrinsic functions are reentrant, but need static attribute */
extern int abs (int val);
#pragma RESTORE
#endif // __CX2__
#pragma SAVE
#pragma REGPARMS
extern char cabs (char val); //计算并返回char val的绝对值
#if !defined (__CX2__)
extern int abs (int val); //计算并返回int val的绝对值
#endif // __CX2__
extern long labs (long val); //计算并返回long val的绝对值
extern float atof (const char *s1); //字符数组(字符串)转浮点数,返回浮点数
extern long atol (const char *s1); //字符数组(字符串)转长整型,返回长整型
extern int atoi (const char *s1); //字符数组(字符串)转长char型,返回char型
extern int rand (void); //生成随机整数
extern void srand (unsigned int seed); //用来将随机数发生器初始化成一个已知(或期望)值
#ifdef _DIV_T_DEFINED
extern div_t __div (int numer, int denom);
#define div(numer,denom) __div((numer),(denom));
extern ldiv_t ldiv (long numer, long denom);
#endif // _DIV_T_DEFINED
extern float strtod (const char *nptr, char **endptr); //将字符串s转换为一个浮点型数据并返回,字符串前面的空格、/、tab符被忽略
extern long strtol (const char *nptr, char **endptr, unsigned char base); //将字符串s转换为一个long型数据并返回,字符串前面的空格、/、tab符被忽略
extern unsigned long strtoul (const char *nptr, char **endptr, unsigned char base); //将字符串s转换为一个unsigned long型数据并返回,溢出时则返回ULONG_MAX。字符串前面的空格、/、tab符被忽略
#define _MALLOC_MEM_ xdata
extern void init_mempool (void _MALLOC_MEM_ *p, size_t size);
extern void _MALLOC_MEM_ *malloc (size_t size);
extern void free (void _MALLOC_MEM_ *p);
extern void _MALLOC_MEM_ *realloc (void _MALLOC_MEM_ *p, size_t size);
extern void _MALLOC_MEM_ *calloc (size_t nmemb, size_t size);
#if defined (__CX2__)
extern void abort(void);
#endif // __CX2__
#pragma RESTORE
#endif // __STDLIB_H__
#ifndef EOF
#define EOF -1
#endif
#ifndef NULL
#define NULL ((void *) 0)
#endif
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned int size_t;
#endif
#pragma SAVE
#pragma REGPARMS
extern char _getkey (void);
extern char getchar (void);
extern char ungetchar (char);
extern char putchar (char);
extern int printf (const char *, ...);
extern int sprintf (char *, const char *, ...);
extern int vprintf (const char *, char *);
extern int vsprintf (char *, const char *, char *);
extern char *gets (char *, int n);
extern int scanf (const char *, ...);
extern int sscanf (char *, const char *, ...);
extern int puts (const char *);
#pragma RESTORE
#endif
/*--------------------------------------------------------------------------
CTYPE.H
Prototypes for character functions.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __CTYPE_H__
#define __CTYPE_H__
#pragma SAVE
#pragma REGPARMS
extern bit isalpha (unsigned char);
extern bit isalnum (unsigned char);
extern bit iscntrl (unsigned char);
extern bit isdigit (unsigned char);
extern bit isgraph (unsigned char);
extern bit isprint (unsigned char);
extern bit ispunct (unsigned char);
extern bit islower (unsigned char);
extern bit isupper (unsigned char);
extern bit isspace (unsigned char);
extern bit isxdigit (unsigned char);
extern unsigned char tolower (unsigned char);
extern unsigned char toupper (unsigned char);
extern unsigned char toint (unsigned char);
#define _tolower(c) ( (c)-'A'+'a' )
#define _toupper(c) ( (c)-'a'+'A' )
#define toascii(c) ( (c) & 0x7F )
#pragma RESTORE
/*--------------------------------------------------------------------------
STRING.H
String functions.
Copyright (c) 1988-2008 Keil Elektronik GmbH and Keil Software, Inc.
Copyright (c) 2008-2016 ARM Germany GmbH
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __STRING_H__
#define __STRING_H__
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned int size_t;
#endif
#ifndef NULL
#define NULL ((void *)0)
#endif
#pragma SAVE
#pragma REGPARMS
extern char *strcat (char *s1, const char *s2);
extern char *strncat (char *s1, const char *s2, size_t n);
extern char strcmp (const char *s1, const char *s2);
extern char strncmp (const char *s1, const char *s2, size_t n);
extern char *strcpy (char *s1, const char *s2);
extern char *strncpy (char *s1, const char *s2, size_t n);
extern size_t strlen (const char *);
extern char *strchr (const char *s, char c);
extern int strpos (const char *s, char c);
extern char *strrchr (const char *s, char c);
extern int strrpos (const char *s, char c);
extern size_t strspn (const char *s, const char *set);
extern size_t strcspn (const char *s, const char *set);
extern char *strpbrk (const char *s, const char *set);
extern char *strrpbrk(const char *s, const char *set);
extern char *strstr (const char *s, const char *sub);
extern char *strtok (char *str, const char *set);
extern char memcmp (const void *s1, const void *s2, size_t n);
extern void *memcpy (void *s1, const void *s2, size_t n);
extern void *memchr (const void *s, char val, size_t n);
extern void *memccpy (void *s1, const void *s2, char val, size_t n);
extern void *memmove (void *s1, const void *s2, size_t n);
extern void *memset (void *s, char val, size_t n);
#pragma RESTORE
#endif
/*--------------------------------------------------------------------------
INTRINS.H
Intrinsic functions for C51.
Copyright (c) 1988-2010 Keil Elektronik GmbH and ARM Germany GmbH
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __INTRINS_H__
#define __INTRINS_H__
#pragma SAVE
#if defined (__CX2__)
#pragma FUNCTIONS(STATIC)
/* intrinsic functions are reentrant, but need static attribute */
#endif
extern void _nop_ (void);
extern bit _testbit_ (bit);
extern unsigned char _cror_ (unsigned char, unsigned char);
extern unsigned int _iror_ (unsigned int, unsigned char);
extern unsigned long _lror_ (unsigned long, unsigned char);
extern unsigned char _crol_ (unsigned char, unsigned char);
extern unsigned int _irol_ (unsigned int, unsigned char);
extern unsigned long _lrol_ (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
#if defined (__CX2__)
extern int abs (int);
extern void _illop_ (void);
#endif
#if !defined (__CX2__)
extern void _push_ (unsigned char _sfr);
extern void _pop_ (unsigned char _sfr);
#endif
#pragma RESTORE
#endif