![申嵌linux c語言程序開發(fā)1嵌入式收費(fèi)版編程入門初級基礎(chǔ)提高自學(xué)學(xué)習(xí)教程高級篇附錄二庫_第1頁](http://file4.renrendoc.com/view/8756d9c9f9d0c6f1b1ffb3d69b7b122e/8756d9c9f9d0c6f1b1ffb3d69b7b122e1.gif)
![申嵌linux c語言程序開發(fā)1嵌入式收費(fèi)版編程入門初級基礎(chǔ)提高自學(xué)學(xué)習(xí)教程高級篇附錄二庫_第2頁](http://file4.renrendoc.com/view/8756d9c9f9d0c6f1b1ffb3d69b7b122e/8756d9c9f9d0c6f1b1ffb3d69b7b122e2.gif)
![申嵌linux c語言程序開發(fā)1嵌入式收費(fèi)版編程入門初級基礎(chǔ)提高自學(xué)學(xué)習(xí)教程高級篇附錄二庫_第3頁](http://file4.renrendoc.com/view/8756d9c9f9d0c6f1b1ffb3d69b7b122e/8756d9c9f9d0c6f1b1ffb3d69b7b122e3.gif)
![申嵌linux c語言程序開發(fā)1嵌入式收費(fèi)版編程入門初級基礎(chǔ)提高自學(xué)學(xué)習(xí)教程高級篇附錄二庫_第4頁](http://file4.renrendoc.com/view/8756d9c9f9d0c6f1b1ffb3d69b7b122e/8756d9c9f9d0c6f1b1ffb3d69b7b122e4.gif)
![申嵌linux c語言程序開發(fā)1嵌入式收費(fèi)版編程入門初級基礎(chǔ)提高自學(xué)學(xué)習(xí)教程高級篇附錄二庫_第5頁](http://file4.renrendoc.com/view/8756d9c9f9d0c6f1b1ffb3d69b7b122e/8756d9c9f9d0c6f1b1ffb3d69b7b122e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
嵌入式家C語言標(biāo)嵌入式家NULL和NUL有什么差嵌入式家本章概對標(biāo)準(zhǔn)C語言的補(bǔ)充,以及一些常用的特性本章目重C語言庫的日期函數(shù)操難嵌入式家CC標(biāo)準(zhǔn)語言庫概要和嵌入式家標(biāo)準(zhǔn)語言概嵌入式家函數(shù)庫簡 余弦函數(shù)cos#includex=嵌入式家函數(shù)庫簡例假設(shè)擔(dān)心math.h中已有名為cos的宏,則可以用下面 括號的特點(diǎn),避免擴(kuò)展同名函數(shù)或宏cosdouble…p=a=a=
/*calIsfunctioncos,always/*callsfunctioncos,always#undef…a=cos(b);/*callsfunctioncos,alwaysC語言標(biāo)準(zhǔn)庫的<assert.h><ctype.h> <locale.h><stddef.h>在95年的修正版
<setjmp.h><signal.h> <iso646.h><wchar.h>在C99中增加了六個(gè)函數(shù) <inttypes.h><stdbool.h>嵌入式家標(biāo)準(zhǔn)庫函數(shù)嵌入式家 程序運(yùn)行在RC機(jī)、大型機(jī)或者介于兩者之間的計(jì)算機(jī)嵌入式家標(biāo)準(zhǔn)C語言函標(biāo)準(zhǔn)C語言函C++兼容嵌入式家標(biāo)準(zhǔn)C語言 刪除數(shù) 符括號內(nèi)使用的將類型void*換成char*,將size_t換成int嵌入式家標(biāo)準(zhǔn)C語言例下面的方法可以保證庫頭文件不被包括多/*IHeaderBtddef.H#ifndef_STDDEF/*Don.ttrytoredeclare*/#define_STDDEFltypedefint…/*0therdefinitions*/C++兼容C++語言包括標(biāo)準(zhǔn)C語言運(yùn)行庫,但增加了幾個(gè)C++中調(diào)用c語言函數(shù)的 嵌入式家C++兼容c語言函數(shù)中調(diào)用另一C語言函externintextern“C“int doublesqrt(doublex);intf(void);}嵌入式家2.2.2C++兼容在頭文件中包括extern“C” /*Filelibrary.h*/#ifdef extern“c”
/*Cdeclarations*/#ifdef }
extern“C“嵌入
嵌入式家 typedef…typedef…typedef
嵌入式家#defineoffsetof(type,memb)((size_t)&((type*)0)-嵌入式家例:對于sizeof(int)為4的字節(jié)尋址計(jì)算structs{inta;intb;}x;size_tsize,offset;ptrdiff_tdiff;Diff=&x.b-Size=sizeof(x.a);程序運(yùn)行結(jié)果是嵌入式家,并將變量errno置為EDOMERANGE由實(shí)現(xiàn)確EDOM,ERANGE和HUGEVAL都在math.h嵌入式家分類函 轉(zhuǎn)換函 嵌入式家分類函 轉(zhuǎn)換函 嵌入式家#defineTRUE #defineFALSEintis_id(constchar{charif((ch=*s++)==‘\0’)returnFALSE;/*emptystring*/if(!(isalpha(ch)||ch==‘_’))returnFALSE;while((ch={}return}嵌入式家externinterrno;or#defineerrno…#defineEDOM #defineERANGE #defineETLSEQ voidperror(constcharchar*strerror(int嵌入式家errno例errno的常見用法是在調(diào)用庫函數(shù)之前 x=sqrt(y);{}嵌入式家 ERANGE嵌入式家perrorperror函數(shù)代替printfx=perror(“sqrt}sqrt 嵌入式家bool、false、
_Bool*無符號整數(shù)類型,只能保存數(shù)值0和1*/1 嵌入式家語法概#include<iso646.h>#defineand #defineand_eq #definebitand definebitor #definecompl #definenot #definenot_eq !=#defineor ||#defineor_eq #definexor #definexor_eq 如果調(diào)用sqrt失敗,則輸出如下sqrt 嵌入式家#ifndef嵌入式家#include<stdio.h>#include<stdlib.h>structITEM{intkey;intvalue;voidadditem(structITEM{assert(itemptr!=}int{return0;}Cchar*strncat(char*s1,constchar*s2,size_tintstrcmp(constchar*s1,constcharintstrncmp(constchar*s1,constchar*s2,size_t嵌入式家char*strcpy(char*s1,constchar char*strncpy(char*s1,constchar*s2,size_t char*strcat(char*s1,constchar嵌入式家Cvoid y(void*destin,void*source,charch,unsigned Void*memcpy(void*destin,void*source,unsigned,unsigned從 void*memchr(void*s,charch,unsignedvoid*memcmp(void*s1,void*s2,unsigned嵌入式家Cintmemicmp(void*s1,void*s2,unsignedvoid*memmove(void*destin,void*source,unsigned從 void*memcpy(void*destin,void*source,unsigned從 void*memset(void*s,charch,unsigned嵌入式家
typedef…
va_end(va_listap);va_copy(va_listdest,va_listsrc);嵌入式家 嵌入式家編寫可變個(gè)數(shù)參數(shù)的函#includeintmain(){return0;} 和整數(shù)類型指定符的值放在文件printargs.h中/*fileprintargs.h;StandardC。*/#defineINTARG
1/*codesusedinargtypep[]*/voidprintargs(int嵌入式家標(biāo)準(zhǔn)C語言中printargs的相應(yīng)定voidprintargs(int*argtypep,…)/*StandardC{ while((argtype=*argtypep++)!={{ printf(”int:%d\n”,va_arg(ap,int));break;caseDBLARG:}}typedef……jmp_buf;嵌入式家嵌入式家例Imp_bufErrorEnv;intguard(void)/*Return0ifsuccessfultelselongjmp{intstatus=setjmp(ErrorEnv);if(status!=0)returnstatus;/*error*/return}int …;}嵌入式家#include#defineSIG_IGN#defineSIG_DFL#defineSIG_ERR raise(intsig);typedef…/*Non—Standardextensionstintkill(intintgsignal(intsoftsig);SIG_IGN-signal(sig,SIG_IGN)SIG_DFL-signal(sig,SIG_DFL)嵌入式家voidnew_handler(int/*Setnewhandler,savingoldhandler*/if(old_handler==SIG_ERR)fprintf(”stderr,”?Could.testablishnew/*storeoldhandler*/if(signal(sig,嵌入式家2.3.11嵌入式家標(biāo)準(zhǔn)庫應(yīng)用總標(biāo)準(zhǔn)C的異常處理機(jī)C語言日期操NULL和NUL的區(qū)嵌入式家編寫參數(shù)數(shù)目可變的利用 world!\n" /*nomoreargumentsprintf("%s\n"," o,world!"); onemorestringargument printf("%s,%s\n"," o","world!");/*twomorestringarguments printf("%s,%d\n"," o",42); onestring,oneint*/嵌入式家標(biāo)準(zhǔn)C的異常處理嵌入式家絕對終調(diào)用 嵌入式家絕對終例#include<stdio.h>staticvoid{ staticvoid{
within'atexit_handler_2'within'atexit_handler_1'}int{printf("thislineshouldneverappear\n");return0;}
/條件結(jié)<assert.h中的#defineassert(condition)_assert((condition),#condition, void_assert(inttest,charconst*test_image,charconst*file,int{if{printf("Assertionfailed:%s,file%s,line%d\n",test_image,file,}}非局部<setjmp.h中的setjmp與 jmp_buf內(nèi)容:程序位置指針、堆棧與框架指針,寄存器與內(nèi) ,嵌入式家非局部#include<stdio.h>jmp_bufj;void{longjmp(j,1);printf("thislineshouldnever}運(yùn)行結(jié)'setjmp'isinitializingexceptionsetjmp'wasjustjumped嵌入式家
int{if(setjmp(j)=={printf("'setjmp'isinitializing'j'\n");printf("thislineshouldneverappear\n");}{printf("'setjmp'wasjustjumped/*異常處理過程}return}信號<signal.h中的raise與raise ,signal(SIGxxxSIG_IGN),voidf(void){signal(SIGFPEhandler 處理過程/*...raise(SIGFPE)*通過'SIGFPE'來調(diào)用處理過程}嵌入式家對內(nèi)存進(jìn)行操作的標(biāo)準(zhǔn)庫memmove()與內(nèi)存Memmovememcpymemmove例將buf從"RIGHT"改為Int{intfor(i=0;i<6;{buf[i+3]=}}對內(nèi)存進(jìn)行操作的標(biāo)準(zhǔn)庫memcmp與例structshorts;long}分析(32位系統(tǒng)環(huán)境structfoobyte[0sstructfoobyte[1]s的字節(jié)structfoobyte[2]無用信息(使l從一個(gè)long類型邊界開始)structfoobyte[3]無用信息(使l從一個(gè)long類型邊界開始structfoobyte[4l的最低2.4.4對內(nèi)存進(jìn)行操作的標(biāo)準(zhǔn)庫strcpy與memcpy嵌入式家對內(nèi)存進(jìn)行操作的標(biāo)準(zhǔn)庫例#include<stdio.h>#include<string.h>typedefstruct{intidcharlast_name[20]char}嵌入式家對內(nèi)存進(jìn)行操作的標(biāo)準(zhǔn)庫例voidmain{char*src_string="Thisisthesourcestring";chardest_string[50];CUSTRECsrc_cust; o!I'mgoingtocopysrc_stringintodest_string!\n");printf("Done!dest_stringis:%s\n",strcpy(dest_string,src_string));printf("Encore!Let'scopyoneCUSTRECtoanother.\n"); ("I'llcopysrc_custintodest_cust./*First,intializethesrc_custdatamembers.*/src_cust.id=1;strcpy(src_cust.last_name,"Strahan");strcpy(src_cust.first_name,"Troy");printf("Done!Ijustcopiedcustomernumber#%d(%s%s).",dest_cust.id,dest_cust.first_name,dest_cust.last_name)嵌入嵌 園開發(fā)板嵌入日期概CalendarTime:日歷時(shí)間clocktick嵌入式家計(jì)C中的計(jì)時(shí)函數(shù)是lock_tclock(void#defineCLOCKS_PER_SEC嵌入式家2.4.4.2 #include“stdio.h”#include“stdlib.h”#include“time.h”intmain(void){ i= clock_tstart,finish; /*測量一 持續(xù)的時(shí)間printf("Timetodo%ldemptyloopsis",i);start=clock();while(i--);finish=clock();duration=(double)(finish-start)/CLOCKS_PER_SEC;printf("%fseconds\n",duration);}2.4.4.2實(shí)例:獲得日歷time_ttime(time_t*#include"time.h"#include"stdio.h"intmain(void){structtm*ptr;time_tlt;lt
結(jié)果:TheCalendarTimenow即 年月日時(shí)分秒到此時(shí)的秒數(shù)printf("TheCalendarTimenowi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 洗手護(hù)士保持手部清潔
- 2025-2030全球游戲QA和測試服務(wù)行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國三維木質(zhì)墻板行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025年全球及中國電儲水熱水器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025-2030全球加厚防爆高壓鍋行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國鋁箔膠囊行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025年全球及中國工作站用橋式起重機(jī)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025-2030全球法務(wù)技術(shù)服務(wù)行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025合同模板房地產(chǎn)收購合同昆山某國際廣場整體購買協(xié)議
- 借款合同擔(dān)保書范本
- 2025年個(gè)人合法二手車買賣合同(4篇)
- 2025年山西國際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《小英雄雨來》讀書分享會
- 中央導(dǎo)管相關(guān)血流感染防控
- 農(nóng)業(yè)行政執(zhí)法現(xiàn)狀及相關(guān)法律法規(guī)課件
- 產(chǎn)時(shí)子癇應(yīng)急演練文檔
- 小學(xué)美術(shù)-《神奇的肥皂粉》教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 測量管理體系內(nèi)審檢查表
- 班組月度考核評分表
- 部編版一年級下冊《道德與法治》教學(xué)工作計(jì)劃及全冊教案
- 三重一大事項(xiàng)決策流程
評論
0/150
提交評論