• <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>

            玩心未泯

            卡爾斯希普拉斯

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              19 Posts :: 0 Stories :: 98 Comments :: 0 Trackbacks
            最近看com相關(guān)的資料,看到CCmdTarget實現(xiàn)com接口的時候,去讀了一些宏的定義,在afxdisp.h頭文件中

            #define BEGIN_INTERFACE_PART(localClass, baseClass) \
             class X##localClass : public baseClass \

            本來這個宏定義很容易理解的,但是這里多出個X##,我真沒見過這種用法,不曉得它是什么用意。
            后來問了幾個朋友也都不知道。

            你知道么?

            也許你也不知道~呵呵,最后我還是找到了相關(guān)的資料,解讀了這個define,還順便認(rèn)識了另外兩個不常用的define

            #define Conn(x,y) x##y
            #define ToChar(x) #@x
            #define ToString(x) #x

            x##y表示什么?表示x連接y,舉例說:
            int  n = Conn(123,456);  結(jié)果就是n=123456;
            char* str = Conn("asdf", "adf")結(jié)果就是 str = "asdfadf";
            怎么樣,很神奇吧

            再來看#@x,其實就是給x加上單引號,結(jié)果返回是一個const char。舉例說:
            char a = ToChar(1);結(jié)果就是a='1';
            做個越界試驗char a = ToChar(123);結(jié)果是a='3';
            但是如果你的參數(shù)超過四個字符,編譯器就給給你報錯了!error C2015: too many characters in constant   :P

            最后看看#x,估計你也明白了,他是給x加雙引號
            char* str = ToString(123132);就成了str="123132";

            最后留幾個小試驗給大家去測測:
            #define Dec(x,y) (x-y)
            int n = Dec( A(123,1), 1230);
            n = Conn(123, Conn(123,332) );
            char* str = A("12", ToString( Dec(3,1));
            結(jié)果會如何呢? 嘿嘿嘿嘿~
            posted on 2007-04-20 16:39 SuperPlayeR 閱讀(26014) 評論(21)  編輯 收藏 引用 所屬分類: C/C++

            評論

            # re: 你也許不知道的#define用法 2007-04-24 16:55 Rome
            …… MFC很多宏就是這樣的啊大哥……  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-04-24 17:14 SuperPlayeR
            是啊,但是我一直沒注意到過。那次看到了,才想搞清楚它是啥意思,幸虧最后還是搞清楚了,就寫篇隨筆讓和我一樣不知道的兄弟們認(rèn)識認(rèn)識咯。  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-07-06 01:35 至尊拖鞋
            認(rèn)識了,雖然沒見過
            :P  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-08-21 21:38 rgf
            見識了  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-09-04 10:07 gg

              回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-09-28 10:05 hanny
            就想查這個呢  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-10-18 10:28 luguo
            tochar怎么不能用呢?  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-10-18 11:19 Minidx全文檢索
            tochar可以用的阿
            樓上的什么情況下不能用?  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-10-18 11:21 螞蟻終結(jié)者
            #@x
            倒沒怎么見過  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-11-09 09:32 游客
            #define oprev(otri1, otri2) sym(otri1, otri2); lnextself(otri2);
            這種定義什么意思  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2007-11-09 09:33 游客
            是不是作為候選項?
            向你請教一下,謝謝  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2008-06-06 17:10 wjh0303
            3q!  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2008-08-28 11:41 apacs
            太有用了  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2008-12-23 17:33 hello
            A(...)是什么函數(shù)呀?  回復(fù)  更多評論
              

            # 這道程序是怎樣運行的? 2009-06-13 08:11 望憂谷
            # define M(x,y,z) x*y+z
            #include <stdio.h>
            void main()
            {int a=1,b=2,c=3;
            printf ("%d\n",M(a+b,b+c,c+a));
            }  回復(fù)  更多評論
              

            # 宏替換 2009-06-13 09:59 Cup
            printf ("%d\n",M(a+b,b+c,c+a)); 等價于
            printf ("%d\n", (a+b*b+c+c+a));  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法[未登錄] 2010-03-31 11:05 K
            謝了~

            有些東東不找到你就很難猜到:)  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2010-04-19 10:12 dandanfeng160
            我遇到了和你們一樣的問題,向樓主請教~~
            @hello
            @Minidx全文檢索
            @螞蟻終結(jié)者
              回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法[未登錄] 2010-12-14 20:55 dd
            不錯~~thx  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2011-05-06 08:21 ffff
            請問如果要插入#號怎么弄?
            比如 #define a(n,b) 我希望替換成 #define n (b)
            請問怎么弄?  回復(fù)  更多評論
              

            # re: 你也許不知道的#define用法 2012-11-12 14:00 eagledame
            謝謝了 ,找的也是這個  回復(fù)  更多評論
              

            四虎国产精品成人免费久久| 久久国产成人午夜aⅴ影院| 伊人久久亚洲综合影院| 超级97碰碰碰碰久久久久最新| 亚洲色大成网站WWW久久九九| 久久精品蜜芽亚洲国产AV| 色综合久久88色综合天天| 国产精品99久久久久久宅男小说| 婷婷综合久久中文字幕蜜桃三电影 | 色欲久久久天天天综合网精品| 久久精品国产亚洲AV高清热| 久久久久99精品成人片三人毛片| 无码人妻久久一区二区三区免费| 伊人久久综在合线亚洲2019| 亚洲国产精品无码久久一线| 久久国产精品免费| 色综合久久中文综合网| 亚洲va久久久噜噜噜久久男同| 精品久久人人做人人爽综合 | 久久久久亚洲AV无码去区首| 精品久久久噜噜噜久久久| 亚洲人成电影网站久久| 四虎国产精品免费久久久| 久久精品国产亚洲av水果派| 久久精品国产亚洲AV不卡| 久久精品国产第一区二区| 国产成人精品久久亚洲高清不卡 | 亚洲第一极品精品无码久久| 97久久婷婷五月综合色d啪蜜芽| 亚洲精品成人久久久| 色婷婷综合久久久久中文字幕| 99久久久久| 九九久久精品国产| 精品国产一区二区三区久久蜜臀| 91精品国产高清久久久久久国产嫩草| 国内精品久久久久影院一蜜桃| 亚洲AV日韩精品久久久久久| 色欲综合久久中文字幕网| 国产Av激情久久无码天堂| 久久超乳爆乳中文字幕| 9久久9久久精品|