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

學(xué)習(xí)心得(code)

superlong@CoreCoder

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

公告

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

常用鏈接

留言簿(4)

我參與的團(tuán)隊(duì)

搜索

  •  

最新隨筆

最新評(píng)論

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

閱讀排行榜

評(píng)論排行榜

Clang 宏定義初探(二)

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

1、參數(shù)粘結(jié)

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

不管是從語(yǔ)義還是編碼復(fù)雜度,都降低了。

2、參數(shù)字符化

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

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

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

4、多重展開(kāi)

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

宏的基本常見(jiàn)用法,都差不多枚舉了一番,往后在見(jiàn)到更高級(jí)的玩法和比較精髓的寫(xiě)法往后再慢慢補(bǔ)充上來(lái)吧,另外GNU的擴(kuò)展也會(huì)在后篇繼續(xù)學(xué)習(xí)了解。
posted on 2016-03-11 01:20 superlong 閱讀(1951) 評(píng)論(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>
            国产精品久久夜| 亚洲欧洲一区二区三区在线观看| 91久久综合亚洲鲁鲁五月天| 亚洲欧美久久久久一区二区三区| 欧美不卡一卡二卡免费版| 亚洲欧美中文日韩在线| 欧美日韩一区二区在线观看视频| 在线欧美不卡| 久久久精品国产一区二区三区| 亚洲午夜精品久久久久久app| 欧美国产综合视频| 亚洲国产精品一区二区第一页| 麻豆久久精品| 玖玖视频精品| 亚洲激情在线视频| 亚洲福利在线视频| 你懂的网址国产 欧美| 亚洲黄色有码视频| 91久久精品国产91性色| 欧美精品在线观看播放| 一区二区日韩免费看| 亚洲另类视频| 欧美日韩一区二区免费在线观看| 一本色道久久综合狠狠躁篇的优点| 亚洲第一中文字幕在线观看| 欧美激情亚洲精品| 亚洲一区二区精品视频| 亚洲一区二区在线| 激情成人综合| 欧美激情欧美狂野欧美精品| 欧美激情一区二区三区| 亚洲夜间福利| 欧美制服第一页| 亚洲精品乱码视频| 中文一区在线| 国内成人精品视频| 免费91麻豆精品国产自产在线观看| 久久资源av| 在线亚洲欧美| 午夜精品久久久久久久白皮肤| 影音先锋久久久| 亚洲免费观看高清完整版在线观看熊| 国产精品成人午夜| 快射av在线播放一区| 欧美精品www| 久久久www免费人成黑人精品| 免费黄网站欧美| 午夜亚洲性色福利视频| 久久视频这里只有精品| 亚洲视频在线一区| 久久精品色图| 亚洲性视频网站| 久久综合图片| 欧美在线视频免费| 欧美绝品在线观看成人午夜影视 | 国产九色精品成人porny| 国产啪精品视频| 日韩视频在线观看免费| 午夜精品久久久久久久99水蜜桃 | 亚洲美女视频网| 国产欧美日韩综合一区在线观看 | 欧美另类在线观看| 久久精品2019中文字幕| 欧美成人精品影院| 久久精品欧美日韩精品| 欧美午夜精品久久久久久孕妇 | 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美激情综合网| 久久久精品日韩欧美| 欧美日韩八区| 欧美a级片网站| 国产亚洲欧美在线| 亚洲午夜未删减在线观看| 亚洲精品中文字幕在线| 久久久久久91香蕉国产| 午夜亚洲福利| 国产精品v欧美精品v日韩| 亚洲国产美国国产综合一区二区| 国产精品视频区| 一本色道久久综合亚洲91| 亚洲国产高清一区| 欧美中文字幕视频| 欧美一区二区三区久久精品茉莉花| 欧美久久久久久久久| 亚洲国产高清在线观看视频| 一区二区亚洲精品国产| 久久动漫亚洲| 久久性天堂网| 国产精品一二三| 在线亚洲高清视频| 一区二区三区日韩欧美| 欧美日本韩国在线| 亚洲人成亚洲人成在线观看| 亚洲高清在线精品| 媚黑女一区二区| 另类av一区二区| 国产一区再线| 久久久噜噜噜久噜久久| 久久综合伊人77777蜜臀| 国产美女诱惑一区二区| 午夜精品偷拍| 久久午夜av| 亚洲第一伊人| 欧美成人免费在线观看| 亚洲高清在线观看| 亚洲美女福利视频网站| 欧美日本网站| 亚洲在线电影| 久久免费视频观看| 影院欧美亚洲| 欧美sm极限捆绑bd| 妖精视频成人观看www| 亚洲欧美卡通另类91av| 国产在线国偷精品产拍免费yy| 欧美成人精品三级在线观看| 亚洲第一色在线| 国产一区二区激情| 亚洲欧美日韩久久精品| 一本到高清视频免费精品| 亚洲午夜精品| 激情欧美一区二区三区| 媚黑女一区二区| 精东粉嫩av免费一区二区三区| 欧美综合国产精品久久丁香| 美女脱光内衣内裤视频久久影院| 亚洲国产视频一区| 欧美日韩卡一卡二| 亚洲欧美日韩中文播放| 免费毛片一区二区三区久久久| 亚洲免费黄色| 噜噜噜在线观看免费视频日韩| 亚洲国内精品在线| 午夜欧美大尺度福利影院在线看 | 亚洲欧美综合另类中字| 国产日韩在线亚洲字幕中文| 牛夜精品久久久久久久99黑人| 99精品视频网| 欧美第一黄网免费网站| 午夜久久久久久| 日韩视频在线免费观看| 国产一区二区日韩精品| 欧美日韩一区二区在线观看| 久热精品在线| 欧美中文字幕在线| 亚洲线精品一区二区三区八戒| 欧美高清不卡在线| 久久久国产精品亚洲一区 | 日韩亚洲欧美中文三级| 久久久久久久一区二区三区| 一区电影在线观看| 亚洲国产精品久久久久秋霞蜜臀 | 国产亚洲一本大道中文在线| 欧美日本一道本在线视频| 久久久久网址| 欧美一区二区三区日韩| 一区二区欧美亚洲| 亚洲欧洲日产国码二区| 欧美激情一区二区三区在线| 久久久久久久综合| 久久福利资源站| 亚洲欧美清纯在线制服| 亚洲视屏在线播放| 99热在线精品观看| 亚洲人成在线播放| 在线电影院国产精品| 国产一区二区三区在线免费观看| 国产精品久久久久9999高清| 欧美日韩免费观看一区三区| 欧美激情影音先锋| 欧美激情视频一区二区三区免费| 免费亚洲电影| 牛牛国产精品| 欧美va天堂在线| 欧美高清在线精品一区| 久久av资源网| 午夜精品久久久久久久| 亚洲欧美欧美一区二区三区| 亚洲免费在线视频一区 二区| 亚洲一区二区av电影| 亚洲男同1069视频| 欧美一区二视频| 久久九九热re6这里有精品 | 先锋影音久久| 欧美一区激情视频在线观看| 欧美一区在线看| 久久久久国内| 蜜桃av噜噜一区| 欧美激情中文字幕一区二区| 欧美日韩高清在线一区| 国产精品国产精品国产专区不蜜| 国产精品久久一区二区三区| 国产欧美精品久久| 国内精品久久久久久久影视蜜臀 | 久久精品主播| 免费成人av资源网| 欧美男人的天堂| 国产精品毛片在线| 激情久久综艺| av不卡在线| 午夜在线视频观看日韩17c|