kikiatw 发表于 2014-6-15 09:58:07

宏定義的疑問

本帖最后由 kikiatw 于 2014-6-15 11:45 编辑

#ifdefUNICODE
    ......
    #define__TEXT(quote)L##quote// 在字符串前边加上 L 使用宽字符,每个字符占两个字节
#else
    ......
    #define__TEXT(quote)quote   // 直接解释为字符串
#endif

#defineTEXT(quote)__TEXT(quote)

上面这个问题我更矇了, 一般我们用宏定义
#define   int   size
这意思是说我们可以用 size 去替代 int 宣告一个整形变数
所以我们在代码内打上 size abc 编译器会替换成 int abc
那上面我们用 TEXT(quote) 是同等於 __TEXT(quote), 在unicode 环境也同等於 L##quote
但是这种是逆向的关係吧, 不代表 TEXT(quote)会替代成 L##quote,
而是在代码段我们打上 L##quote 会被替代成 TEXT(quote)吧
可是怎麼跟小甲鱼老师说的恰恰相反呢? 请大神帮忙开释, 感谢!!

牡丹花下死做鬼 发表于 2014-6-15 10:41:12

话说 能用简体字么?? 好多字不认识啊 ~~~~(>_<)~~~~

kikiatw 发表于 2014-6-15 10:48:07

大神出現了,可惜大神看不懂正體中文......

kikiatw 发表于 2014-6-15 10:52:57

問題一我懂了, 小甲魚老師在後面有做解釋了, 可是問題二還是看不懂, 求大神解釋

kikiatw 发表于 2014-6-15 11:45:53

牡丹花下死做鬼 发表于 2014-6-15 10:41 static/image/common/back.gif
话说 能用简体字么?? 好多字不认识啊 ~~~~(>_

我改成簡體中文了請大神幫忙開釋!

kelamoyujuzhen 发表于 2014-6-15 13:48:38

#define你可以把它想象成就是纯文本的替换,他和typedef是有区别的。TEXT(quote) 会被替换成__TEXT(quote),不要去想他的什么功能。就是简单地字符替换。这就好比你的爸爸叫你儿子,你的老婆叫你老公,这两个称谓都是只一个人。如果是UNICODE编码方式就把__TEXT(quote) 换成 L##quote,##这个应该是编译器的某项功能吧,反正就是在前面加上一个L,编程宽字符了。总之这些就是简单地字符替换而已{:1_1:}

kikiatw 发表于 2014-6-15 14:32:39

本帖最后由 kikiatw 于 2014-6-15 14:43 编辑

抱歉 我懂了, 我把#define 與 #typedef搞混了 我應該重新複習該章節!!

cmaomao 发表于 2014-6-16 14:31:01

kikiatw 发表于 2014-6-15 14:32 static/image/common/back.gif
抱歉 我懂了, 我把#define 與 #typedef搞混了 我應該重新複習該章節!!

#typedef   ?????
你确定搞懂了

kikiatw 发表于 2014-6-16 18:06:07

我真的搞懂了, 我知道多個#

河蟹代码 发表于 2014-7-1 18:00:52

不懂,进来学习一下。。。。。

智商是硬伤 发表于 2015-8-20 08:12:10

{:7_146:}

waliemiao 发表于 2015-10-15 00:21:31

看看
页: [1]
查看完整版本: 宏定義的疑問