![c語(yǔ)言中#和##的用法_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/6/8876ce01-7665-40b4-b941-d6fc9f2c68a9/8876ce01-7665-40b4-b941-d6fc9f2c68a91.gif)
![c語(yǔ)言中#和##的用法_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/6/8876ce01-7665-40b4-b941-d6fc9f2c68a9/8876ce01-7665-40b4-b941-d6fc9f2c68a92.gif)
![c語(yǔ)言中#和##的用法_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/6/8876ce01-7665-40b4-b941-d6fc9f2c68a9/8876ce01-7665-40b4-b941-d6fc9f2c68a93.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上本文主要講述c語(yǔ)言的一點(diǎn)基礎(chǔ)語(yǔ)法和在內(nèi)核的應(yīng)用中其中的一點(diǎn)例子。#,#分別在c語(yǔ)言中是怎么作用?文章代碼編譯的環(huán)境:桌面環(huán)境:10.04內(nèi)核:2.6.32編譯器:gcc4.4.3一、基本的用法1、#.參數(shù)名以#作為前綴則結(jié)果將被擴(kuò)展為由實(shí)際參數(shù)的帶引號(hào)的字符串。如:#define dprint(expr)printf(#expr"=%dn",expr);intmain()inta=20,b=10;dprint(a/b);return0;上面的例子會(huì)打印出:a/b=22、#.預(yù)處理器運(yùn)算符#為宏提供了一種連接實(shí)際參數(shù)的手段。如果替換文本中的參數(shù)與#相
2、鄰,則該參數(shù)將被實(shí)際參數(shù)替換,#與前后的空白將被刪除,并對(duì)替換后的結(jié)果重新掃描。形成一個(gè)新的標(biāo)號(hào),如果這樣產(chǎn)生的記號(hào)無(wú)效,或者結(jié)果依賴于#運(yùn)算順序,則結(jié)果沒有定義。如:#definepaste(front,back)front#back因此,宏調(diào)用paste(name,_xiaobai)的結(jié)果為name_xiaobai.如:#define createfun(name1,name2)void name1#name2()printf("%scalledn",_FUNCTION_);createfun(the,function);intmain()thefunction();r
3、eturn0;輸出的結(jié)果是:thefunctioncalled二、#可以嵌套嗎?看下面的例子:#define cat(x,y)x#y宏調(diào)用cat(var,123)講生成var123.但是,宏調(diào)用cat(cat(1,2),3)沒有定義:#阻止了外層調(diào)用的參數(shù)的擴(kuò)展。因此,它將生成下列的記號(hào)串:cat(1,2)3.如果要再引入第二層的宏定義,如下定義:#define xcat(x,y)cat(x,y)那么xcat(xcat(1,2),3)將生成123, 這是因?yàn)閤cat自身的擴(kuò)展不包含#運(yùn)算符。三、內(nèi)核中例子因?yàn)槭亲鰉ips架構(gòu)的,所以以mips為例子。Linux2.6.25內(nèi)核,include/
4、asm-mips/io.h文件??截愐徊糠值拇a出來。#define_BUILD_MEMORY_SINGLE(pfx,bwlq,type,irq)staticinlinevoidpfx#write#bwlq(typeval,volatilevoid_iomem*mem)volatiletype*_mem;type_val;_mem=(void*)_swizzle_addr_#bwlq(unsignedlong)(mem);_val=pfx#ioswab#bwlq(_mem,val);if(sizeof(type)!=sizeof(u64)|sizeof(u64)=sizeof(long)*_m
5、em=_val;/*在這里省略了一些代碼*/#define_BUILD_MEMORY_PFX(bus,bwlq,type)_BUILD_MEMORY_SINGLE(bus,bwlq,type,1)#defineBUILDIO_MEM(bwlq,type)_BUILD_MEMORY_PFX(_raw_,bwlq,type)_BUILD_MEMORY_PFX(,bwlq,type)_BUILD_MEMORY_PFX(_mem_,bwlq,type)BUILDIO_MEM(b,u8)BUILDIO_MEM(w,u16)BUILDIO_MEM(l,u32)BUILDIO_MEM(q,u64)跟蹤宏的展
6、開。BUILDIO_MEM(b,u8)BUILDIO_MEM(w,u16)BUILDIO_MEM(l,u32)BUILDIO_MEM(q,u64)就會(huì)生成了如下四個(gè)函數(shù):staticinlinevoidwriteb(u8val,volatilevoid_iomem*mem)staticinlinevoidwritew(u16val,volatilevoid_iomem*mem)staticinlinevoidwritel(u32val,volatilevoid_iomem*mem)staticinlinevoidwriteq(u64val,volatilevoid_iomem*mem)同時(shí),如果當(dāng)我們用函數(shù)類似writeb之類的出現(xiàn)了問題,一般情況下用編輯工具是找不到函數(shù)定義的,于是乎跟蹤
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級(jí)數(shù)學(xué)三位數(shù)乘兩位數(shù)綜合作業(yè)題大全附答案
- 八年級(jí)歷史下冊(cè) 第六學(xué)習(xí)主題 科技、教育與文化 第17課 摘取科學(xué)技術(shù)的明珠說課稿5 川教版
- 建筑外墻保溫施工合同范本
- 中外專有技術(shù)許可合同書
- 新三板掛牌戰(zhàn)略合作合同
- 2025年度交通設(shè)施施工進(jìn)度支付合同
- 2025年度建筑廢棄物資源化利用工程勞務(wù)分包安全合同
- 2025年度智慧城市建設(shè)規(guī)劃設(shè)計(jì)合同
- 房屋共有權(quán)合同樣書解析
- 2025年度自行車配件售后服務(wù)合同
- 小學(xué)一年級(jí)數(shù)學(xué)上冊(cè)口算練習(xí)題總匯
- 睡眠專業(yè)知識(shí)培訓(xùn)課件
- 潤(rùn)滑油知識(shí)-液壓油
- 2024年江蘇省中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 臨床思維能力培養(yǎng)
- 人教版高中物理必修第三冊(cè)第十章靜電場(chǎng)中的能量10-1電勢(shì)能和電勢(shì)練習(xí)含答案
- 中國(guó)宗教文化 中國(guó)古代宗教文化的特點(diǎn)及現(xiàn)代意義
- 2024年四川省巴中市級(jí)事業(yè)單位選聘15人歷年高頻難、易錯(cuò)點(diǎn)練習(xí)500題附帶答案詳解
- 《中國(guó)香文化》課件
- 演出經(jīng)紀(jì)人培訓(xùn)
- 蓋房四鄰簽字協(xié)議書范文
評(píng)論
0/150
提交評(píng)論