高级篇附录二语言库_第1页
高级篇附录二语言库_第2页
高级篇附录二语言库_第3页
高级篇附录二语言库_第4页
高级篇附录二语言库_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、顾/回顾/回C/C/NULL和memcpy和/NULL和memcpy和/对标准C语言的补充,以及一些常用的特性理解NULL,offsetoferrno宏或函数C语言库对标准C语言的补充,以及一些常用的特性理解NULL,offsetoferrno宏或函数C语言库的日期函数操/C标准语言库概要和应标准C/C标准语言库概要和应标准C2.1 /2.1 /2.1.1 标准c预处理器命令下列程序段中头文件math.h#include math2.1.1 标准c预处理器命令下列程序段中头文件math.h#include double x,y;x = 余弦函数cos/2.1.1 例假设担心mathh中已有名为

2、2.1.1 例假设担心mathh中已有名为cos的宏,则可以用下面两方基础函数。两者都利用宏名后面不能紧跟一个括号的特点,避免扩展同名函数或宏cosdoublep=a= a= *calIsfunctioncos,always*callsfunctioncos,always也可以取消所有涉及到的宏的定义#undefa=ways/2.1.2 CC语言提供的标准函数库,函数库通过#include进在C89标准中2.1.2 CC语言提供的标准函数库,函数库通过#include进在C89标准中在95年的修正版 在C99中增加了六个函数/2.1.3 /2.1.3 /2.1.4 “独立(freestandi

3、ng)”宿主(hosted)”程序运行在2.1.4 “独立(freestanding)”宿主(hosted)”程序运行在RC机、大型机或者介于两者之间的计算机/2.2 标准C标准C语言函C2.2 标准C标准C语言函C兼容/2.2.1标准C如何从标准c语言定义得到传统c与删除限定符const、restrict2.2.1标准C如何从标准c语言定义得到传统c与删除限定符const、restrict与符括号内使用的将类型void*换成char*,将size_t。/2.2.1标准C/*IHeaderBtddefH#ifndef_STDDEF 2.2.1标准C/*IHeaderBtddefH#ifndef

4、_STDDEF *Don.ttrytoredeclare* #define _STDDEF l/*0therdefinitions/2.2.2 CC+语言包括标准C语言运行库,但增加了几个2.2.2 CC+语言包括标准C语言运行库,但增加了几个C+中调用c语言函数的方在C中c/2.2.2 Cc语言函数中调用另一C语言函c+中调用C语言函2.2.2 Cc语言函数中调用另一C语言函c+中调用C语言函一组c语言函数,则可以对所有cdoublesqrt(doublex); /2.2.2 C从C语言或c+调用头文件在头文件中包括extern示这是个c+(条件预编2.2.2 C从C语言或c+调用头文件在头

5、文件中包括extern示这是个c+(条件预编/* File library.h */ #ifdef extern“c”/* Cdeclarations * #ifdef 用正常cinclude嵌/2.3.1 2.3.1 #define offsetof(type,member-/2.3.1 #define 2.3.1 #define offsetof(type,memb)(size_t)&(type*)0)-/2.3.1 例:对于)为4的字节寻址计算2.3.1 例:对于)为4的字节寻址计算structsize_tsize,offset; ptrdiff_t diff;Diff = x.b-Si

6、ze = sizeof(x.a); offset=offsetof(structs,b);程序运行结果是/2.3.2 2.3.2 如果函数结果太小,无法表示,则函数返回0,errno是否设置ERANGE由实现确EDOM,ERANGE和HUGEVAL都在mathh/2.3.3 分类函数的名称以is分类函转换函2.3.3 分类函数的名称以is分类函转换函/2.3.3 分类函数的名称以is分类函转换函2.3.3 分类函数的名称以is分类函转换函/2.3.3 #define TRUE#define FALSE2.3.3 #define TRUE#define FALSE 0 is_id(constch

7、ar*s)charif (ch=*s+) returnFALSE;/*emptyif(!(isalpha(ch)|ch=_)returnFALSE; while (ch = *s+)!=0)if(!(isalnum(ch)|ch=_)returnreturn/2.3.4 or# defineerrno#define#define2.3.4 or# defineerrno#define#define#definevoidperror(constcharchar *strerror(/2.3.4 errno用例2.3.4 errno用例 x=sqrt(y); f(”?sqrt/2.3.4 cERA

8、NGE EILSEQ 翻译多字节字符序列时遇到的编码错误。这个错误最终会由mbrtowc2.3.4 cERANGE EILSEQ 翻译多字节字符序列时遇到的编码错误。这个错误最终会由mbrtowc/2.3.4 perror perror函数代替fx=2.3.4 perror perror函数代替fx=sqrt(y); perror(“sqrtfailed”); sqrt/2.3.5 bool、false、2.3.5 bool、false、_Bool /*无符号整数类型,只能保存数值0和1 */ 1bool_true_false_are_define /2.3.6 语法概#include#def

9、ine and #defineand_eq #define bitand #define bitor #define compl #define not #define not_eq #define or #define or_eq #define xor #define xor_eq|2.3.6 语法概#include#define and #defineand_eq #define bitand #define bitor #define compl #define not #define not_eq #define or #define or_eq #define xor #defin

10、e xor_eq|!如果调用sqrt失败,则输出如下sqrte/2.3.7 Assert.h#ifndefvoid#defineassert(x)2.3.7 Assert.h#ifndefvoid#defineassert(x)消息(参数文本、文件名(_FILE_)和号)/2.3.7 #include #include #include struct ITEMvoidadditem(struct2.3.7 #include #include #include struct ITEMvoidadditem(structITEMassert(itemptr!=return 0;/2.3.8Ccha

11、r*strncat(char*s1,constchar*s2,size_t 2.3.8Cchar*strncat(char*s1,constchar*s2,size_t strcmp(constchar*s1,constcharstrncmp(constchar*s1,constchar*s2,size_t/2.3.8Cchar*strcpy(char*s1,constchar2.3.8Cchar*strcpy(char*s1,constcharchar*strncpy(char*s1,constchar*s2,size_t char*strcat(char*s1,constchar/2.3.

12、8Cvoidy(void*destin,void*source,charsigned若Void*memcpy(void2.3.8Cvoidy(void*destin,void*source,charsigned若Void*memcpy(void*destin,void*source,unsigned,unsigned从void*memchr(void*s,charsignedvoid*memcmp(void*s1,void*s2,unsigned/2.3.8Cmemicmp(void*s1,void*s2,unsignedvoid*memmove(void*destin,void*source

13、,unsigned2.3.8Cmemicmp(void*s1,void*s2,unsignedvoid*memmove(void*destin,void*source,unsigned从void*memcpy(void*destin,void*source,unsigned从void*memset(void*s,charsigned/2.3.9Stdarg.htypedef va_start(va_listap,2.3.9Stdarg.htypedef va_start(va_listap,typeLastFixedParm) va_arg(va_list ap,type)va_end(va_

14、list ap); va_copy(va_listdest,va_listsrc);/2.3.9)2.3.9)/2.3.9#includearg_types=( 2.3.9#includearg_types=( returnargs和整数类型指定符的值放在文件args.h/*fileargsh;Standard C。1 /*codesusedinargtypep*/ #definevoid/2.3.9#includevoid*argtypep,2.3.9#includevoid*argtypep,) *StandardC(argtype=*argtypep+)!=case/开发板商2.3.10

15、 typedef jmp_buf; setjmp(Jmp_bufenv);voidlongJmp(jmp_buf2.3.10 typedef jmp_buf; setjmp(Jmp_bufenv);voidlongJmp(jmp_bufs/2.3.10 返回/2.3.10 返回/2.3.10 例Imp_bufErrorEnv; /*Return0ifselongjmp2.3.10 例Imp_bufErrorEnv; /*Return0ifselongjmpsus=us!=0) returns us;return/2.3.11 #include#define SIG_IGN #define SI

16、G_DFL #define #definetypedef2.3.11 #include#define SIG_IGN #define SIG_DFL #define #definetypedef/*NonStandardstvoid,sig,char*/2.3.11 voidSIG_IGN 2.3.11 voidSIG_IGN SIG_DFL signal(sig,kill/2.3.11 void/*Set new handler,saving old handler*/ old_handler=signal(sig,&new_handler); if(old_handler = SIG_ER

17、R)2.3.11 void/*Set new handler,saving old handler*/ old_handler=signal(sig,&new_handler); if(old_handler = SIG_ERR)/* store old handler*/ f(“stderr,”?Could。tputbackold/2.3.11 2.3.11 /2.4 标准C的异常处理机C语言日2.4 标准C的异常处理机C语言日期操malloc()、calloc()、 /2.4.1利用world! n/*nomoreargumentsf(%sn , o, onemorestringf(%s,

18、 %sn , f(%s, %dn, o , world!); /* two more string 2.4.1利用world! n/*nomoreargumentsf(%sn , o, onemorestringf(%s, %sn , f(%s, %dn, o , world!); /* two more string o, onestring,/2.4.2 标准C信号/2.4.2 标准C信号/2.4.2.1 调用abort/2.4.2.1 调用abort/2.4.2.1 例#include #includesicvoidf(withinwithinatexit_handler_2 withi

19、nsicvoid2.4.2.1 例#include #includesicvoidf(withinwithinatexit_handler_2 withinsicvoidf(withinf(thislineshouldneverreturn/2.4.2.2 中的#define_assert(condition), #condition, fvoid2.4.2.2 中的#define_assert(condition), #condition, fvoidiftest,charconst*test_image,charconstf(Assertionfailed:%s,file%s,line%d

20、n,test_image,file,/2.4.2.3 非局部setjmp.h中的setjmp与它2.4.2.3 非局部setjmp.h中的setjmp与它longjmp(jr)来goto到对象j/2.4.2.3 非局部#include #include jmp_buf j;voidif(setjmp(j)=f(setjmpisinitializingraise_exception();/恢复上下2.4.2.3 非局部#include #include jmp_buf j;voidif(setjmp(j)=f(setjmpisinitializingraise_exception();/恢复上下

21、f(exceptionf(thislineshouldneverlongjmp(j,/* jump到异常处理过f(thislineshouldf(setjmpwasjust/* 异常处理过returnsetjmpisinitializingj exception raised setjmp was just ju/2.4.2.4 信号signal.h中的raise与raiseSIG_DFL),/使用系统默认的处理方法SIG_IGN),voidhandler( void f(void)2.4.2.4 信号signal.h中的raise与raiseSIG_DFL),/使用系统默认的处理方法SIG_

22、IGN),voidhandler( void f(void)signal(SIGFPE,handler);/*.处理过程raise(SIGFPE); /* SIGFPE来调用处理过/2.4.3 memmove() 与内存Memmove memcpymemmove例将buf2.4.3 memmove() 与内存Memmove memcpymemmove例将buf从RIGHT改为siccharbuf=R,I,G,H,T,0,-,-,-for (i = 0; i6; bufi+3=2.4.4 memcmp() 与例struct shorts; long l;2.4.4 memcmp() 与例stru

23、ct shorts; long l;structfoobyte0 structfoobyte1 structfoobyte2 structfoobyte3 structfoobyte4 structfoobyte5 struct fos的低位字sl的次低位字lestruct1.开发板商2.4.4 strcpy()与memcpystrcpy()函数只能拷贝字符串2.4.4 strcpy()与memcpystrcpy()函数只能拷贝字符串,遇到NULL字符时结memcpy()拷贝字符串时,通常都使用strcpy()在拷贝其它数据时,通常都使用memcpy()/2.4.4 例#include #in

24、clude string. typedefstructid2.4.4 例#include #include string. typedefstructidcharlast_name20 /2.4.4 例voidmainchar*src_string=Thisisthesour char dest_string50;CUSTREC src_cust; CUSTRECtring2.4.4 例voidmainchar*src_string=Thisisthesour char dest_string50;CUSTREC src_cust; CUSTRECtringo! Im going to cop

25、y o f(Done!dest_stringis:%sn,strcpy(dest_string,src_string); f(Encore! Lets copy one CUSTREC to another. n) ;prinft(Illcopyo dest_cust. /,ializethe src_custdata members.*src_cust.id=1strcpy(src_cust.last_name,_name,memcpy(&dest_cust, &src_cust, f(Done!Ijustcopiedcustomernumber#%d(%s%s).dest_cust.id,

26、_name,dest_cust.last_name)嵌园CoordinatedUniversal)CalendarTimeepochclock tick/CoordinatedUniversal)CalendarTimeepochclock tick/2.4.4.2 C中的计时函数是lock_t2.4.4.2 C中的计时函数是lock_tclock(void#defineCLOCKS_PER_SEC/2.4.4.2 #i nclude “stdio.h” #include“stdlib.h” #i nclude “time.h” main( void )i= clock_t start,/*

27、测量2.4.4.2 #i nclude “stdio.h” #include“stdlib.h” #i nclude “time.h” main( void )i= clock_t start,/* 测量一个事件持续的时间f(Timetodo%ldemptyloopsis,istart = clock(); while( i- -); finish=clock();duration=(double)(finish-start)/f(%fsecondsn,duration/2.4.4.2 time_ttime(time_t*#include time.h #includestdio.h structtm*ptr; time_t lt;结果:TheCalendar Timenow is2.4.4.2 time_ttime(time_t*#include time.h #includestdio.h structtm*ptr; time_t lt;结果:TheCalendar Time

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论