最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

宏_T、_TEXT、TEXT、L區(qū)別

2021-02-02 23:18 作者:kekeed  | 我要投稿

宏_T、_TEXT、TEXT、L區(qū)別

MSDN中對于L的說明有一大堆英文,不過主要的就是:L是用來標(biāo)志一個字符(串)為寬字符(串)

寬字符和多字節(jié)字符的說明如下:(引用自網(wǎng)絡(luò))

寬字符,wide character,該字符集內(nèi)每個字符使用相同的位長;

多字節(jié)字符,multibyte character,每個字符可以是一到多個字節(jié)不等,而某個字節(jié)序列的字符值由字符串或流(stream)所在的環(huán)境背景決定。

當(dāng)你在VS2005以上版本的IDE工作時,可以選擇工作于這兩種不同的編碼方式下,而在Unicode方式下,則要對字符(串)常量前添加L來告訴編譯器它是寬字符

而MS為我們定義了好幾個相關(guān)的宏,下面來一一說明:

_T ? ? ? ? ? ?//定義于tchar.h

_TEXT ? ? ?//同樣定義于tchar.h,具體如下:


?

#define ? ? _T(x) ? ? ? __T(x) ? ? ? ?#define ? ? _TEXT(x) ? ?__T(x) ? ?#ifdef ?_UNICODE ? ?#define ? ? __T(x) ? ? ?L ## x ? ? ? ?// ? ?第210行 ? ? ? ?#else ? ? ? ?#define ? ? __T(x) ? ? ?x ? ? ? ? ? ? ?// ? ?第858行 ? ? ? ?#endif ?


TEXT ? ? //定義于winnt.h



?

#define ? ? TEXT(quote) __TEXT(quote) ? ?#ifdef ?UNICODE ? ? ? ? ? ? ? ? ? ? ? ?#define ? ? __TEXT(quote) L##quote ? ? ? ? ? ? ?#else ? ? ? /* UNICODE */ ? ? ? ? ? ? ? ? ? ? ?#define ? ? __TEXT(quote) quote ? ? ? ? ? ? ? ?#endif ? ? /* UNICODE */ ? ? ? ? ? ? ? ? ?


當(dāng)我看到這里的時候,一下子頭暈了,不知道大家有沒有注意到下面兩個問題:

1.這三個宏分別在兩個不同的文件被定義,看上去一個是運(yùn)行時的頭文件,一個是Win的頭文件

2.前面兩個根據(jù)_UNICODE來確定宏內(nèi)容,另一個則是根據(jù)UNICODE

那如果要同時使用這三個宏的話,那不是要同時定義_UNICODE和UNICODE?帶著問題,我把項(xiàng)目的屬性修改一下

當(dāng)設(shè)置為Unicode編碼的時候,編譯器命令選項(xiàng)中的確同時加入了_UNICODE和UNICODE

看來這應(yīng)該又是MS的歷史遺留問題拉,搜索一下才發(fā)現(xiàn):(引自網(wǎng)絡(luò))

Jeffrey Richter在《Windows核心編程》中說,_UNICODE宏用于C運(yùn)行期頭文件,而UNICODE宏則用于Windows頭文件.當(dāng)編譯源代碼模塊時,通常必須同時定義這兩個宏.

嘻嘻,無意發(fā)現(xiàn)的~~~~扯遠(yuǎn)拉~~~~

看IDE自動生成的代碼,大都使用TEXT這個,應(yīng)該是因?yàn)镮DE生成的都是基于Win的代碼,使用這個也很正常吧

從上面的分析可得:

這幾個宏的效果都是一個的,還是建議大家有事沒事都加上其中一個(_T、_TEXT、TEXT)


宏_T、_TEXT、TEXT、L區(qū)別的評論 (共 條)

分享到微博請遵守國家法律
大安市| 巴塘县| 九台市| 合山市| 德昌县| 延吉市| 抚顺市| 河津市| 武穴市| 中牟县| 阳城县| 无棣县| 固镇县| 湖口县| 永修县| 大新县| 淮北市| 阳城县| 峨边| 木里| 嘉善县| 务川| 兴安盟| 正定县| 绥宁县| 昌都县| 通辽市| 栖霞市| 阿拉善右旗| 榆树市| 应城市| 柳江县| 灵寿县| 抚远县| 黄骅市| 长泰县| 英山县| 平塘县| 西和县| 隆尧县| 疏勒县|