青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

學習心得(code)

superlong@CoreCoder

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  74 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks

公告

文字可能放在http://blog.csdn.net/superlong100,此處存放代碼

常用鏈接

留言簿(4)

我參與的團隊

搜索

  •  

最新隨筆

最新評論

  • 1.?re: Poj 1279
  • 對于一個凹多邊形用叉積計算面積 后能根據(jù)結果的正負來判斷給的點集的時針方向?
  • --bsshanghai
  • 2.?re: Poj 3691
  • 你寫的這個get_fail() 好像并是真正的get_fail,也是說fail指向的串并不是當前結點的子串。為什么要這樣弄呢?
  • --acmer1183
  • 3.?re: HDU2295[未登錄]
  • 這個是IDA* 也就是迭代加深@ylfdrib
  • --superlong
  • 4.?re: HDU2295
  • 評論內容較長,點擊標題查看
  • --ylfdrib
  • 5.?re: HOJ 11482
  • 呵呵..把代碼發(fā)在這里很不錯..以后我也試試...百度的編輯器太爛了....
  • --csuft1

閱讀排行榜

評論排行榜

Clang 宏定義初探(二)

本篇總結下這幾天看的宏的一些看到的用法。

1、參數(shù)粘結

這是一個類似 shell 之類的腳本語言的特性,可以利用這個特性完成一些重復度比較高的編碼的簡化。
例如,對proc文件系統(tǒng)進行綁定的時候,需要在/proc/test/目錄下,簡歷3個文件接口,test1、test2、test3.
可以這樣寫
#define BIND(x) test##x->read_proc=test##x##_read
在使用的時候,就可以
BIND(1); //展開為test1->read_proc=test1_read;
BIND(2); //展開為test2->read_proc=test2_read;

不管是從語義還是編碼復雜度,都降低了。

2、參數(shù)字符化

在使用單個 # 號,作為函數(shù)式宏的參數(shù)前綴時,可以讓宏的內容變成字符串,比如說:
#define print(x) do{\
printf(#x);\
printf("=%d\n",x);\
}while(0)
使用的時候,直接寫:
int t = 1;
print(t);
結果會是 t=1,這個在做日志的時候還是非常好用的。

3、do{...}while(0) 和 ({...})

可以認為是前者是 void 函數(shù),后者是有 return 值的函數(shù)。
入2中所示,do{...}while(0) 是為了產生一個程序塊,當宏里有多條需要語句需要執(zhí)行時,如果不適用這種do{...}while(0)的形式,可能導致一些隱形的錯誤,例如:
#define print(x) {printf(#x);printf("=%d\n",x);
正常的:
print(t); 是沒有問題的,但是如果放在程序段里:
if( flag )
  print(t);
else
  print(a);
展開之后,會發(fā)現(xiàn)為
if( flag )
{printf("t");printf("=%d\n",t);};
else
這個語法就錯了。因此,當代碼段比較多,且不需要返回值時就用 do{...}while(0)吧。
另外一種方式屬于 GNU 的擴展,后續(xù)在看。

4、多重展開

還是基于打印的例子,我需要打印一些列舉的參數(shù)值:
#define P(x) arg##x
#define print(x) do{printf(#P(x));printf("=%d\n",P(x));}while(0)
這個編譯通不過,換成以下方式即可:
#define P(x) arg##x
#define __print(x) do{printf(#x);printf("=%d\n",x);}while(0)
#define _print(x) __print(x)
#define print(x) _print(P(x))
修改成這樣,解決了想要的解決的問題:
int arg1 = 1;
print(1);
輸出結果為:arg1=1
主要涉及的問題在于宏的多次展開,宏每次展開只會對當前的輸入?yún)?shù)進行一次展開,當你的輸入值也是個宏的時候,就需要使用過度宏,讓你的輸入接著展開。
對于多次展開沒有從最根本的原理解釋,只是從實驗感官上對這個特性做了分析,實際上,自己也不會寫出那么復雜的宏(怕中間調用出漏洞)。

宏的基本常見用法,都差不多枚舉了一番,往后在見到更高級的玩法和比較精髓的寫法往后再慢慢補充上來吧,另外GNU的擴展也會在后篇繼續(xù)學習了解。
posted on 2016-03-11 01:20 superlong 閱讀(1951) 評論(0)  編輯 收藏 引用 所屬分類: C
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产尤物精品| 亚洲精品四区| 亚洲免费精彩视频| 一区在线影院| 亚洲国产三级在线| 日韩亚洲欧美精品| 一区二区三区国产| 亚洲一区一卡| 欧美一区二区三区视频在线观看 | 久久久久一区二区| 久热精品视频在线观看一区| 久久久久久久一区二区| 欧美gay视频激情| 欧美日韩一级大片网址| 国产精品无码永久免费888| 国产一区二区三区直播精品电影| 精品动漫3d一区二区三区| 亚洲精品日产精品乱码不卡| 亚洲一区免费在线观看| 久久久亚洲一区| 亚洲精品乱码久久久久久黑人| 亚洲大片在线| 亚洲综合色视频| 欧美jizzhd精品欧美喷水| 国产精品久久久久一区二区三区共| 国内精品一区二区三区| 一本综合久久| 六月天综合网| 夜夜嗨av一区二区三区中文字幕| 欧美一区二区女人| 欧美日韩综合| 91久久视频| 久久久精品一区二区三区| 99精品久久免费看蜜臀剧情介绍| 性8sex亚洲区入口| 欧美日韩国产不卡| 在线成人av| 欧美一级久久久久久久大片| 亚洲高清资源| 久久久久久网址| 国产精品亚洲一区| 一区二区三区高清| 欧美二区在线观看| 久久电影一区| 国产欧亚日韩视频| 亚洲午夜视频| 亚洲国产中文字幕在线观看| 久久激情视频| 国产日韩欧美一区二区三区在线观看| 夜夜精品视频一区二区| 欧美黄色片免费观看| 久久黄色级2电影| 亚洲第一免费播放区| 亚洲欧美99| 亚洲精品综合久久中文字幕| 狂野欧美一区| 在线日韩视频| 久久蜜桃资源一区二区老牛 | 欧美一区二区三区视频免费播放| 亚洲激情电影在线| 玖玖玖国产精品| 在线观看三级视频欧美| 久久久久久穴| 久久九九免费视频| 国产伊人精品| 欧美搞黄网站| 欧美成人精品1314www| 亚洲第一页在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久不见久久见免费视频1| 国产香蕉97碰碰久久人人| 久久国产精品色婷婷| 亚欧成人精品| 在线成人av| 亚洲精品欧美日韩| 国产精品国产三级国产普通话99| 亚洲嫩草精品久久| 欧美伊久线香蕉线新在线| 在线观看视频一区| 亚洲精品激情| 国产婷婷色一区二区三区四区| 久久久久国产一区二区| 美女国内精品自产拍在线播放| 亚洲精品视频一区| 亚洲视频www| 国内成人精品一区| 欧美国产激情| 欧美性片在线观看| 久久免费视频观看| 欧美精品啪啪| 午夜影院日韩| 理论片一区二区在线| 夜夜嗨av一区二区三区四季av| 亚洲一二三区精品| 伊人精品在线| 亚洲视频精选在线| 亚洲成人在线免费| 99人久久精品视频最新地址| 国产亚洲亚洲| 亚洲巨乳在线| 极品少妇一区二区三区| 亚洲精品久久久久久久久久久久久 | 在线观看91久久久久久| 最新中文字幕亚洲| 国产婷婷色一区二区三区| 欧美激情1区| 国产精品一二| 亚洲国产婷婷香蕉久久久久久99| 亚洲午夜精品国产| 国产伦精品一区二区三区在线观看 | 欧美视频在线免费看| 久久精品一区二区三区四区| 欧美成人一区二区在线| 久久gogo国模啪啪人体图| 欧美成人精品不卡视频在线观看| 午夜视频一区在线观看| 欧美福利影院| 久久综合久久88| 欧美性久久久| 亚洲人精品午夜| 亚洲二区在线视频| 欧美在线不卡| 久久福利影视| 欧美性色视频在线| 亚洲最新在线| 亚洲伦理在线观看| 开心色5月久久精品| 欧美中在线观看| 国产精品美女视频网站| 99精品免费视频| 在线视频欧美日韩精品| 欧美激情导航| 亚洲黄一区二区三区| 日韩视频免费在线观看| 欧美成人xxx| 亚洲福利视频网站| 亚洲精品国精品久久99热| 美女露胸一区二区三区| 欧美aa国产视频| 在线色欧美三级视频| 久久久午夜电影| 嫩模写真一区二区三区三州| 一区在线免费| 欧美成人第一页| 日韩视频免费看| 亚洲女同在线| 国产一区二区三区的电影| 性色av一区二区三区在线观看| 新67194成人永久网站| 国产精品久久久999| 亚洲欧美国产高清| 久久欧美中文字幕| 亚洲国产福利在线| 欧美精品精品一区| 亚洲视频在线观看免费| 亚洲欧美清纯在线制服| 国产精品一区三区| 久久精品麻豆| 欧美丰满高潮xxxx喷水动漫| 亚洲国产美女| 欧美日韩高清区| 亚洲欧美国产高清| 欧美国产另类| 亚洲一级在线观看| 国产亚洲欧洲| 欧美激情一区二区三级高清视频| 99国内精品| 农夫在线精品视频免费观看| 99精品热6080yy久久 | 亚洲高清三级视频| 亚洲视频综合在线| 国产精品一区二区久久久| 久久国产精品一区二区| 欧美福利一区二区| 亚洲欧美国产毛片在线| 黄色成人免费观看| 欧美日韩高清一区| 久久久噜噜噜久久久| 亚洲九九精品| 免费久久精品视频| 亚洲男人的天堂在线观看| 亚洲福利国产精品| 国产精品视频男人的天堂| 久久久久久色| 一区二区三区精品| 免费一级欧美片在线播放| 亚洲一区国产一区| 亚洲黄色小视频| 国产日韩欧美在线| 国产精品福利av| 欧美成人免费网站| 久久久久九九视频| 亚洲在线一区二区三区| 亚洲激情一区二区三区| 久久尤物电影视频在线观看| 亚洲欧美日韩精品综合在线观看| 亚洲二区在线| 在线播放视频一区| 一区二区三区无毛| 国产性色一区二区|