搜索
bottom↓
回复: 5

INCLUDE 头文件小结

[复制链接]

出0入0汤圆

发表于 2012-4-6 14:39:27 | 显示全部楼层 |阅读模式

序号 库类别 头文件 详细说明
1 错误处理 errno.h
2 字符处理 ctype.h
3 地区化 local.h
4 数学函数 math.h
5 信号处理 signal.h
6 输入输出 stdio.h
7 实用工具程序 stdlib.h
8 字符串处理 string.h


字符处理函数
本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换

头文件 ctype.h

函数列表<>
函数类别 函数用途 详细说明
字符测试 是否字母和数字 isalnum
是否字母 isalpha
是否控制字符 iscntrl
是否数字 isdigit
是否可显示字符(除空格外) isgraph
是否可显示字符(包括空格) isprint
是否既不是空格,又不是字母和数字的可显示字符 ispunct
是否空格 isspace
是否大写字母 isupper
是否16进制数字(0-9,A-F)字符 isxdigit
字符大小写转换函数 转换为大写字母 toupper
转换为小写字母 tolower

地区化
本类别的函数用于处理不同国家的语言差异。

头文件 local.h

函数列表
函数类别 函数用途 详细说明
地区控制 地区设置 setlocale
数字格式约定查询 国家的货币、日期、时间等的格式转换 localeconv

数学函数
本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51)

头文件 math.h

函数列表
函数类别 函数用途 详细说明
错误条件处理 定义域错误(函数的输入参数值不在规定的范围内)
值域错误(函数的返回值不在规定的范围内)
三角函数 反余弦 acos
反正弦 asin
反正切 atan
反正切2 atan2
余弦 cos
正弦 sin
正切 tan
双曲函数 双曲余弦 cosh
双曲正弦 sinh
双曲正切 tanh
指数和对数 指数函数 exp
指数分解函数 frexp
乘积指数函数 fdexp
自然对数 log
以10为底的对数 log10
浮点数分解函数 modf
幂函数 幂函数 pow
平方根函数 sqrt
整数截断,绝对值和求余数函数 求下限接近整数 ceil
绝对值 fabs
求上限接近整数 floor
求余数 fmod


本分类函数用于实现在不同底函数之间直接跳转代码。 头文件 setjmp.h io.h

函数列表
函数类别 函数用途 详细说明
保存调用环境 setjmp
恢复调用环境 longjmp

信号处理
该分类函数用于处理那些在程序执行过程中发生例外的情况。

头文件 signal.h

函数列表
函数类别 函数用途 详细说明
指定信号处理函数 signal
发送信号 raise

可变参数处理
本类函数用于实现诸如printf,scanf等参数数量可变底函数。

头文件 stdarg.h

函数列表
函数类别 函数用途 详细说明
可变参数访问宏 可变参数开始宏 va_start
可变参数结束宏 va_end
可变参数访问宏 访问下一个可变参数宏 va_arg

输入输出函数
该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现

头文件 stdio.h

函数列表
函数类别 函数用途 详细说明
文件操作
删除文件 remove
修改文件名称 rename
生成临时文件名称 tmpfile
得到临时文件路径 tmpnam
文件访问 关闭文件 fclose
刷新缓冲区 fflush
打开文件 fopen
将已存在的流指针和新文件连接 freopen
设置磁盘缓冲区 setbuf
设置磁盘缓冲区 setvbuf
格式化输入与输出函数 格式输出 fprintf
格式输入 fscanf
格式输出(控制台) printf
格式输入(控制台) scanf
格式输出到缓冲区 sprintf
从缓冲区中按格式输入 sscanf
格式化输出 vfprintf
格式化输出 vprintf
格式化输出 vsprintf
字符输入输出函数 输入一个字符 fgetc
字符串输入 fgets
字符输出 fputc
字符串输出 fputs
字符输入(控制台) getc
字符输入(控制台) getchar
字符串输入(控制台) gets
字符输出(控制台) putc
字符输出(控制台) putchar
字符串输出(控制台) puts
字符输出到流的头部 ungetc
直接输入输出 直接流读操作 fread
直接流写操作 fwrite
文件定位函数 得到文件位置 fgetpos
文件位置移动 fseek
文件位置设置 fsetpos
得到文件位置 ftell
文件位置复零位 remind
错误处理函数 错误清除 clearerr
文件结尾判断 feof
文件错误检测 ferror
得到错误提示字符串 perror

实用工具函数
本分类给出了一些函数无法按以上分类,但又是编程所必须要的。

头文件 stdlib.h

函数列表
函数类别 函数用途 详细说明
字符串转换函数 字符串转换为整数 atoi
字符串转换为长整数 atol
字符串转换为浮点数 strtod
字符串转换为长整数 strtol
字符串转换为无符号长整型 strtoul
伪随机序列产生函数 产生随机数 rand
设置随机函数的起动数值 srand
存储管理函数 分配存储器 calloc
释放存储器 free
存储器分配 malloc
重新分配存储器 realloc
环境通信 中止程序 abort
退出程序执行,并清除环境变量 atexit
退出程序执行 exit
读取环境参数 getenv
程序挂起,临时执行一个其他程序 system
搜索和排序工具 二分查找(数据必须已排序) bsearch
快速排序 qsort
整数运算函数 求绝对值 abs
div
得到除法运算底商和余数
求长整形底绝对值 labs
求长整形除法的商和余数 ldiv
多字节字符函数 得到多字节字符的字节数 mblen
得到多字节字符的字节数 mbtowc
多字节字符转换 wctomb
多字节字符的字符串操作 将多字节串转换为整数数组 mbstowcs
将多字节串转换为字符数组 mcstowbs

字符串处理
本分类的函数用于对字符串进行合并、比较等操作

头文件 string.h

函数列表
函数类别 函数用途 详细说明
字符串拷贝 块拷贝(目的和源存储区不可重叠) memcpy
块拷贝(目的和源存储区可重叠) memmove
串拷贝 strcpy
按长度的串拷贝 strncpy
字符串连接函数 串连接 strcat
按长度连接字符串 strncat
串比较函数 块比较 memcmp
字符串比较 strcmp
字符串比较(用于非英文字符) strcoll
按长度对字符串比较 strncmp
字符串转换 strxfrm
字符与字符串查找 字符查找 memchr
字符查找 strchr
字符串查找 strcspn
字符串查找 strpbrk
字符串查找 strspn
字符串查找 strstr
字符串分解 strtok
杂类函数 字符串设置 memset
错误字符串映射 strerror
求字符串长度 strlen

日期和时间函数
本类别给出时间和日期处理函数

头文件 time.h

函数列表
函数类别 函数用途 详细说明
时间操作函数 得到处理器时间 clock
得到时间差 difftime
设置时间 mktime
得到时间 time
时间转换函数 得到以ASCII码表示的时间 asctime
得到字符串表示的时间 ctime
得到指定格式的时间 strftime

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2012-4-14 16:18:08 | 显示全部楼层
AVRGCC常见库文件头文件介绍 .
2011-08-09 13:10 126人阅读 评论(1) 收藏 举报
  
一、库函数头文件介绍
库函数按不同的类别声明在不同的头文件中,以字母为序分别介绍头文件:
ctype.h:字符类型函数
eeprom.h:EEPROM 访问函数
errno.h:错误处理函数
ina90.h:与IAR C兼容的头文件
interrupt.h:中断处理函数
inttypes.h:定义不同的数据类型
io.h:包含寄存器定义和其它头文件
math.h:数学函数
pgmspace.h:与IAR C兼容的头文件,内含对Flash存储器中数据读写函数
progmem.h:与pgmspace.h 头文件相同
setjmp.h:长跳转函数
sig-avr.h:与signal.h相同,旧版头文件,建议不使用
signal.h:信号处理函数
stdlib.h:标准库函数
stdio.h:标准输入输出函数
string.h:字符串操作函数
timer.h:定时器控制函数
twi.h:针对ATmega163的I2C函数
wdt.h:看门狗定时器控制函数

注:AVRGCC在使用前应包含头文件,例如#include <avr/signal.h>,这里要包含头文件所在的文件夹avr,用户自己的头文件可以先复制到avr文件夹下。


二、字符类型处理函数库
int isalnum(int c):如果c为字母或数字则返回1,否则返回0。
int isalpha(int c):如果c为字母则返回1,否则返回0。
int isascii(int c):如果c为ASCII码则返回1,否则返回0。
int isblank(int c):如果c为空格字符则返回1,否则返回0,可以是space键或tab键输入的空格字符。
int iscntrl(int c):如果c为控制字符则返回1,否则返回0。
int isdigit(int c):如果c为数字则返回1,否则返回0。
int isgraph(int c):如果c为可打印字符(不包括空格)则返回1,否则返回0。
int islower(int c):如果c为小写字母则返回1,否则返回0。
int isprint(int c):如果c为可打印字符(包括空格)则返回1,否则返回0。
int ispunct(int c):如果c为标点符号则返回1,否则返回0。
int isspace(int c):如果c为空格、' '、'\f'、'\r'、'\t'、'v'之一则返回1,否则返回0。
int isupper(int c):如果c为大写字母则返回1,否则返回0。
int isxdigit(int c):如果c为16进制数则返回1,否则返回0。
int toascii(int c):将c转换为7位ASCII字符,成功返回1,否则返回0。
int tolower(int c):将c转换为小写字母,成功返回1,否则返回0。
int toupper(int c):将c转换为大写字母,成功返回1,否则返回0。


        三、AVRGCC内置EEPROM访问函数库
void eeprom_read_block(void *buf, unsigned int addr, size_t n):从EEPROM的addr地址开始,读取n个字节到buf。
int eeprom_is_ready():宏定义,EEPROM准备好(EECR =0)返回非0,否则返回0。
unsigned char eeprom_read_byte (unsigned int addr):从EEPROM读取addr地址处的字节数据,在以前的版本中为unsigned char eeprom_rb(unsigned int addr),新版也兼容旧版本的函数。
unsigned int eeprom_read_word(unsigned int addr):从EEPROM读取一个整数,低字节地址addr,高字节地址(addr+1) ,在以前的版本中为unsigned int eeprom_rw(unsigned int addr),新版本也兼容旧版本的函数。
void eeprom_write_byte (unsigned int addr, unsigned char val):向EEPROM的addr地址处写入字节数据val,在以前的版本中为void eeprom_wb(unsigned int addr, unsigned char val),新版本也兼容旧版本的函数。
_EEPUT(addr, val) eeprom_wb(addr, val):与IAR C的兼容函数
_EEGET(var, addr) (var) = eeprom_rb(addr):与IAR C的兼容函数


       四、AVRGCC定义不同类型的数据
在使用前应包含头文件#include <inttypes.h>,在本头文件中重新进行数据类型定义,将GNU的数据类型改为符合ANSI C的规范。
typedef signed char int8_t:8位有符号数
typedef unsigned char uint8_t:8位无符号数
typedef int int16_t:16位有符号数
typedef unsigned int uint16_t:16位无符号数
typedef long int32_t:32位有符号数
typedef unsigned long uint32_t:32位无符号数
typedef long long int64_t:64位有符号数
typedef unsigned long long uint64_t:64位无符号数
Typedef int16_t intptr_t:指针
Typedef uint16_t uintptr_t:指针
注意:在使用“-mint8”选项时,编译器将把int类型定义为8位


       五、AVRGCC数学函数库
在使用前应包含头文件#include <math.h>,而且math.h数学函数库中定义的函数需要libm.a库文件支持,因此在在连接时增加-lm参数,或者在在makefile的LDFLAGS=后面追加-lm参数。
M_PI:常数,为3.141592653589793238462643
M_SQRT2:常数,为1.4142135623730950488016887
double cos( double x ):返回以弧度形式表示x的余弦值
double fabs( double x ):返回x的绝对值。
double fmod( double x, double y ):返回x/y的余数
double modf( double x, double *iptr ):把浮点数分解成整数部分和小数部分,整数部分存放到pint指向的变量,小数部分应当大于或等于0而小于1,并且作为函数返回值返回。
double sin( double x ):返回以弧度形式表示x的正弦值。
double sqrt( double x ):返回x的平方根
double tan( double x ):返回以弧度形式表示x的正切值。
double floor( double x ):返回不大于x的最大整数。
double ceil( doublce x ):返回不小于x的最小整数。
double frexp( double x, int *exp ):把浮点数x分解成数字部分y(尾数)和以2为底的指数n两个部分,即x=y*2n,y的范围为0.5≤y<1,y值被函数返回,而n值存放在pexp指向的变量中
double ldexp( double x, int exp ):返回x*2exp。
double exp( double x ):返回以e为底x的幂,即ex
double cosh( double x ):以弧度形式返回x的双曲余弦值
double sinh( double x ):以弧度形式返回x的双曲正弦值
double tanh( double x ):以弧度形式返回x的双曲正切值
double acos( double x ):以弧度形式返回x的余弦值
double asin( double x ):以弧度形式返回x的正弦值
double atan( double x ):以弧度形式返回x的余弦值
double atan2( double x, double y ):返回y/x的反正切,其范围在-π~+π之间
double log( double x ):返回x的自然对数。
double log10( double x ):返回以10为底的对数
double pow( double x, double y ):返回xy值
int isnan(double x):如果x为非负数(NAN,值为0xffffffff),返回1,否则返回0
int isnaf(double x):如果x的值为正溢出(+INF,值大于0x7f800000)和负溢出(-INF,值小于0xff800000)则返回0,否则返回1
double strtod( const char *s, char **endptr ):将ASCII字符串转换为double数
double square( double x ):返回x的平方根
double inverse( double x ):返回1/x


       六、AVRGCC字符串操作函数库
在使用前应包含头文件#include <string.h>
void * memccpy (void *dest,const void *src,int val,size_t len):从scr复制不超过len个字节到dest,在复制的过程中如果存在val,则停止复制并返回,如果不存在val,则复制len个字符。
void * memchr(const void *src,int val,size_t len):在字符串src中搜索len个字节长度以寻找与val相同的字符,如果成功返回匹配字符的地址指针,否则返回NULL
int memcmp(const void *s1,const void *s2,size_t len):对字符串s1和s2的前len个字符进行比较,如果相同返回0,如果s1中字符串大于s2中字符串,则返回大于0的值,如果s1中字符串小于s2中字符串,则返回小于0的值。
void * memcpy(void *dest,const void *src,size_t len):拷贝src所指的对象中拷贝len个字符至dest所指的对象中,函数返回dest的值。。
void * memmove(void *dest,const void *src,size_t len):拷贝src中len个字符至dest,其它与memcpy基本相同,但拷贝区可以重迭,在拷贝过程中使用了个长度为len的临时数组。
void * memset(void *dest,int val,size_t len):在dest中从开始位置填充len个字节的val,它返回dest
int strcasecmp(const char *s1,const char *s2):比较两个字符串,如果相同返回0,如果s1中字符串大于s2中字符串,则返回大于0的值,如果s1中字符串小于s2中字符串,则返回小于0的值。
char * strcat(char *dest,const char *src):将src所指向的字符串(包括终止字符串的空字符)复制到dest所指向的数组的末尾,并且src所向指向的字符串的初始字符将覆盖dest末尾的空字符,函数返回dest的值。
char *strchr(const char *src,int val):在字符串src中搜索最后出现的val,并返回它的位置,终止字符串的空字会也作为串的一部分,函数返回指src中第一个val的位置,如果没有出现与val相同的字符,则返回一个空指针。
int strcmp(const char *s1,const char *s2):比较两个字符串,如果相同返回0,如果s1中字符串大于s2中字符串,则返回大于0的值,如果s1中字符串小于s2中字符串,则返回小于0的值。
char * strcpy(char *dest,const char *src):将src所指向的字符串(包括终止字符串的空字符)复制到dest所指向的数组的末尾,函数返回dest的值。
size_t strlcat(char *dest,const char *src,size_t size):基本和strcat函数相同,但只复制前size个字符,如果size大于src所指向字符串的长度,则将src复制到dest后就返回。
size_t strlcpy(char *dest,const char *src,size_t size):基本和strcpy函数相同,但只复制前size个字符,如果size大于src所指向字符串的长度,则将src复制到dest后就返回。
size_t strlen(const char *src):返回字符串src的长度,不包括结束NULL字符
char * strlwr(char *string):将src字符串中的大写字母转换成相应的小写字母,其它字符保持不变
int strncasecmp(const char *s1,const char *s2,size_t len):基本和strcasecmp函数相同
char * strncat(char *dest,const char *src,size_t len):函数strncat将src所指向的字符串(包括终止字符和空字符)复制到dest所指向的数组的末尾,最多追回len个字符,空字符及空字符后的字符不予复制。src的初始字符覆盖dest末尾的空字符。结果字符串的末尾通常追加一个空字符,函数返回dest的值。
int strncmp(const char *s1,const char *s2,size_t len):函数比较s1和s2所指向的字符串,如果相同返回0,如果s1中字符串大于s2中字符串,则返回大于0的值,如果s1中字符串小于s2中字符串,则返回小于0的值。
char *strncpy(char *dest,const char *src,size_t len):基本和strlcpy函数相同
size_t strnlen(const char *src,size_t len):基本和strlen函数相同,如果src小于len,则返回src的长度(不包含结束NULL字符),否则返回len
char * strrchr(const char *src,int val):基本和strchr函数相同,但返回的是最后一次与val匹配字符的位置
char * strrev(char *string):将字符串string翻转,即第一个字符变成最后一个,最后一个变成第一个。
char * strstr(const char *s1,const char *s2):在字符串s1中搜索字符串s2,并返回找到的第一个相匹配的针,否则返回NULL
char * strupr(char *string):将src字符串中的小写字母转换成相应的大写字母,其它字符保持不变


七、定时器控制函数timer.h

文件包含为:#include <avr/timer.h>
timer.h文件定义定时/计数器使用的一个枚举类型:
enum
{
STOP = 0,
CK = 1,
CK8 = 2,
CK64 = 3,
CK256 = 4,
CK1024 = 5,
T0_FALLING_EDGE = 6,
T0_RISING_EDGE = 7
};
枚举类型定义定时/计数器的控制寄存器的时钟源(分频系数)
void timer0_source( unsigned int src):将src赋值给寄存器TCCR0
void timer0_stop();:通过对寄存器TCNT0清零来停止定时器0
void timer0_start();:通过对寄存器TCNT0写入1来启动定时器0

出0入0汤圆

发表于 2012-4-14 17:42:51 | 显示全部楼层
这个很有用,谢谢

出0入0汤圆

发表于 2014-4-21 10:36:07 | 显示全部楼层

出0入0汤圆

发表于 2014-4-25 18:12:11 | 显示全部楼层
不错,收藏

出0入0汤圆

发表于 2014-12-30 16:39:29 | 显示全部楼层
这个不错,谢谢!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 05:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表