MFC代码中的_T做什么的?

qq576826394 2012-02-03 06:31:54
最近学C++请问MFC 代码中为什么会用多的_T _TEXT他们有什么作用?达到这个作用是怎么实现的?
请告诉我原理,我本来是C#学生,后来看视频感觉C++真的很强大,所以来学C++体验底层。
...全文
389 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenhongang 2012-02-05
  • 打赏
  • 举报
回复
那个_T也是差不多的,你右键进入转到声明,追踪源代码就知道了,就是为了方便写代码统一,微软搞了个宏定义,TEXT(“。。。”),既可以表示长字符(unicode等两个字节编码),也可以表示短字符(ascii编码)
wenhongang 2012-02-05
  • 打赏
  • 举报
回复

这个是一个头文件下的部分定义
#ifdef UNICODE
。。。

#define __TEXT(quote) L##quote

#else
。。。
#define __TEXT(quote) quote
#endif

#define TEXT(quote) __TEXT(quote)
tulipcaicai 2012-02-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bluesky12312388 的回复:]

#define _T(x) __T(x)
#define __T(x) L ## x

就是和定义 L"test"一样的unicode字符,
当然这是在定义了unicode宏的情况下,
如果没有定义unicode宏那么就应该类似于
#define _T(x) ##x
[/Quote]

++
chayedanwc 2012-02-04
  • 打赏
  • 举报
回复
TCHAR *szError = L"Error";
字符串(literal string)前面的大写字母L,用于告诉编译器该字符串应该作为Unicode字符
串来编译。当编译器将字符串置于程序的数据部分中时,它在每个字符之间分散插入零字节。
这种变更带来的问题是,现在只有当定义了_UNICODE时,程序才能成功地进行编译。我们需
要另一个宏,以便有选择地在字符串的前面加上大写字母L。这项工作由_TEXT宏来完成,
_TEXT宏也在TChar.h文件中做了定义。如果定义了_UNICODE,那么_TEXT定义为下面的形
式:
#define _TEXT(x) L ## x
如果没有定义_UNICODE,_TEXT将定义为
#define _TEXT(x) x
使用该宏,可以改写上面这行代码,这样,无论是否定义了_UNICODE宏,它都能够正确
地进行编译。如下所示:
TCHAR * szError = _TEXT("Error");
_TEXT宏也可以用于字符串
cbzjzsb123 2012-02-04
  • 打赏
  • 举报
回复
百度一下就知道了啊我也是看那上面的讲的很清楚,支持unicode的吧
bluesky12312388 2012-02-04
  • 打赏
  • 举报
回复
#define _T(x) __T(x)
#define __T(x) L ## x

就是和定义 L"test"一样的unicode字符,
当然这是在定义了unicode宏的情况下,
如果没有定义unicode宏那么就应该类似于
#define _T(x) ##x
youkuxiaobin 2012-02-04
  • 打赏
  • 举报
回复
标准化的东西
程序员小迷 2012-02-04
  • 打赏
  • 举报
回复
表示可能是单字符可能是宽字符
c87527124 2012-02-03
  • 打赏
  • 举报
回复
我是来同意说C++强大的!帮不了楼主,抱歉了!
qq576826394 2012-02-03
  • 打赏
  • 举报
回复
如果不启用UNIcode支持就不用加_T了吗?根据您的经验请推荐我是否驱动unicode支持?启动后有什么利弊?
qq120848369 2012-02-03
  • 打赏
  • 举报
回复
就是一个宏...

可以方便程序员写代码的, 程序员就可以肆无忌惮的不担心编码不一致的问题了, 一律用_T括起来就安全了..

否则有的地方用宽字符, 有的地方用GB的, 最后自己也不知道用的什么了.
qq576826394 2012-02-03
  • 打赏
  • 举报
回复
_T和_TEXT等

65,196

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧