色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > C語言中單井號(#)和雙井號(##)在宏語句中的應用

C語言中單井號(#)和雙井號(##)在宏語句中的應用 時間:2018-09-25      來源:未知

在閱讀Linux內核代碼過程中,特別是一些預處理指令宏的時候,會看到宏語句里會包含一些# 或者是連著的## 符號,剛接觸的時候覺得很一頭霧水,但這些宏語句有時候繞不開,所以為了更好地讀懂這些代碼,很有必要仔細學些一下這些特殊符號的含義。

# 的功能

# 的功能是將其后面的宏參數進行字符串化操作(stringfication),簡單說就是在對它所引用的宏變量通過替換后在其左右各加上一個雙引號。

1. #define WARN_IF(exp) \

2. do { \

3. if (exp) \

4. fprintf(stderr, "Warning: " #exp "\n"); \

5. } while(0)

現在在程序中以下面的方式調用這個宏:

1. WARN_IF (divider == 0);

那么在編譯時,上面的這句話被擴展為:

1. do { if (divider == 0) fprintf(stderr, "Warning: " "divider == 0" "\n"); } while(0);

這樣每次divider(除數)為0的時候便會在標準錯誤流上輸出一個提示信息。

## 的功能

## 稱為連接符號(concatenator),由兩個# 號組成,其功能是在帶參數的宏定義中將兩個子串(token)聯接起來,從而形成一個新的子串。但它不可以是第一個或者后一個子串。所謂的子串(token)就是指編譯器能夠識別的小語法單元,注意這里連接的對象是token就行,而不一定是宏的變量。

下面舉個例子來看看它們是怎樣工作的。假設程序中已經定義了這樣一個帶參數的宏:

1. #define LINK_MULTIPLE(a,b,c,d) a##_##b##_##c##_##d

現在在程序中以下面的方式調用這個宏:

1. struct _record_type LINK_MULTIPLE(name,company,position,salary);

那么在編譯時,上面的這句話被擴展為:

1. struct _record_type name_company_position_salary;

綜合舉例

后舉一個綜合# 和## 的例子。假設程序中已經定義了這樣一個帶參數的宏:

1. #define paster( n ) printf( "token" #n " = %d", token##n )

現在在程序中以下面的方式調用這個宏:

1. int token9 = 9;

2. paster( 9 );

那么在編譯時,上面的paster( 9 ); 這句話被擴展為:

1. printf( "token" "9" " = %d", token9 );

注意到在這個例子中, paster(9); 中的這個9 被原封不動的當成了一個字符串,與”token”連接在了一起,從而成為了token9 。而#n 也被”9”所替代。 可想而知,上面程序運行的結果就是在屏幕上打印出

1. token9=9

相信大家理解了這些特殊符號在宏語句中的含義后,對閱讀內核的代碼會帶來幫助。

上一篇:環境的搭建之遠程訪問linux系統

下一篇:基于3.14內核usb攝像頭驅動的移植

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 24小时日本在线视频 | 久久97人人超人人超碰超国产 | 亚洲日韩精品AV无码富二代 | BBWBBWBBW少妇毛茸茸 | 久久久久亚洲AV无码尤物 | 欧美精产国品一二三类产品特点 | 亚洲а∨无码2019在线观看 | 亚洲chinese男同志gay在线 | 一二三四在线观看免费中文在线观看 | 亚洲成AV人片无码不卡 | 我爱avav色aⅴ爱avav | 欧美黑吊大战白妞 | 久久国产精品嫩草影院的使用方法 | 99国产精品欧美一区二区三区 | 亚洲国产精品久久久久婷婷图片 | 农村熟妇高潮精品A片 | 97久久精品人妻人人搡人人玩 | 在线观看你懂的网址 | 人人妻人人澡人人爽欧美精品 | 婷婷成人综合激情在线视频播放 | 国产亚洲精品俞拍视频 | 好男人社区WWW在线观看 | 无码免费午夜福利片在线 | 亚洲AV无码国产精品色午夜软件 | 韩国三级l中文字幕无码 | 国产区在线视频 | 91福利社在线 | 日本小视频网址 | 成人av一区二区三区在线观看 | 亚洲色欲色欲www网 国产亚洲精品精品国产亚洲综合 | 撕开奶罩疯狂揉吮奶头 | 综合色区亚洲熟妇另类 | 亚洲欧洲日本综合aⅴ在线 亚洲五月综合缴情在线观看 | 最好看的2018国语在线 | 特黄熟妇丰满人妻无码 | 名器高h禁伦桌上肉伦h | 中文字幕 亚洲精品 | 日韩视频一区二区三区在线观看 | 91茄子在线观看入口 | 偷妻无码一区二区三区动漫 | 久久国产超碰女女av |