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