#(stringizing)是"字串化"運算子,只能用在帶有參數的巨集,可以直接看範例比較快。
範例:
#include ‹cstdio›
#define str(x) printf(#x)
int main(int argc,char**argv)
{
str(stringizing\n);
return 0;
}
##(merging)是"合併"運算子,一樣直接看範例比較快。
範例:
#include ‹cstdio›
#define mer(s,n) printf(#s,val##n)
const int val1 = 7;
int main(int argc,char**argv)
{
mer(%d\n,1);
return 0;
}
《多型與虛擬》對 stringizing 跟 merging 這兩個 operators 有比較清楚的解釋。BTW, 書上的 MFCLite 現在在網路上還找得到: http://jjhou.boolan.com/efile-mfclite.htm
回覆刪除沒想到coopermaa大大也知道這本<(_ _)>,侯捷大師是我最喜歡的電腦書作者了!
回覆刪除這本多型與虛擬還有另一本深入探索C++物件模型以及COM本質論都是絕版書,我去年剛上大學才在圖書館找到看完之後整個通體舒暢:)XD
哇塞!這幾本書藝術成份有三四層樓那麼高耶,你居然都看完了!!
回覆刪除佩服!《C++物件模型》跟《COM本質論》這兩本我翻了一兩章就束諸高閣了,應該已經積了一層灰了吧。
看完跟理解是兩回事啊XD
回覆刪除不過coopermaa大大有這兩本書看來也是十年以上的前輩囉XDDDDDDDD
我 66 年次的,大學唸資管,這幾本書好像是大四買的,唸資管卻挑戰這麼硬的題目,實在是不自量力,果然我也的確看不懂。如果有緣的話,以後再挑戰吧,哈~
回覆刪除天啊coopermaa大大竟然跟我老爸差不多年次...失敬失敬...果然是前前前輩<(_ _)>
回覆刪除我也不過 30 出頭,還是 "年輕人" 啊.
回覆刪除該驚訝的是我,你老爸實在是太威了。XD
昨天腦內曆法錯亂誤以為是1966...XD
回覆刪除