#(井號)在C/C++的#define宏定義中的特殊用法
工作需要,被迫看了一段老外編寫(xiě)的C++代碼,開(kāi)始被老外繞了一通,最后找到了原因.老外真是牲口,媽的啥技巧都用,查了一下書(shū)知道了幾個(gè)#號在#define宏定義中的特殊用法,不過(guò)這東西好像在特殊情況下的確會(huì )有些用途,不防分享一下,我也是從網(wǎng)上抄來(lái)的,不好意思:
1.#:在宏展開(kāi)的時(shí)候會(huì )將#后面的參數替換成字符串,如:
#define p(exp) printf(#exp);
調用p(asdfsadf)的時(shí)候會(huì )將#exp換成"asdfsadf"
2.##:將前后兩個(gè)的單詞拼接在一起。例如《The C Programming Language》中的例子:
#define cat(x,y) x##y
調用cat(var, 123)展開(kāi)后成為var123.
3.#@:將值序列變?yōu)橐粋€(gè)字符
#define ch(c) #@c
調用ch(a)展開(kāi)后成為'a'.
看看是不是很好玩,也許特殊情況下,用一次也很有趣.
@
來(lái)源:http://blog.sina.com.cn/s/blog_4b650d650100pufd.html
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。