visu studio编程中L、TEXT、_TEXT、_T 用法说明

宽字符和多字节字符的说明如下:

宽字符,wide character,该字符集内每个字符使用相同的位长;

多字节字符,multibyte character,每个字符可以是一到多个字节不等,而某个字节序列的字符值由字符串或流(stream)所在的环境背景决定。

当你在VS2005以上版本的IDE工作时,可以选择工作于这两种不同的编码方式下,而在Unicode方式下,则要对字符(串)常量前添加L来告诉编译器它是宽字符。关于宽字符和多字节字符的用法,MS为我们定义了好几个相关的宏,下面来一一说明:

L:表示一个字符(串)是宽字符(串)

如:

[cpp]  view plain copy
  1. CString myStr(L"test string");

_T、_TEXT、TEXT 三者效果相同

宽字符(wide character):每个字符使用相同的位长。

多字节字符(multibyte character):每个字符为一到多个字节,而某个字节序列的字符值由字符串或流(stream)所在的环境背景决定。

VS2010 环境,可以选择工作于这两种不同的编码方式下。
Unicode方式下,则要对字符(串)常量前添加L来告诉编译器它是宽字符。

_T            //定义于tchar.h

_TEXT      //同样定义于tchar.h

[cpp]  view plain copy
  1. #define _T(x)       __T(x)
  2. #define _TEXT(x)    __T(x)
  3. #ifdef  _UNICODE
  4. #define __T(x)      L ## x     //第210行
  5. #else
  6. #define __T(x)      x          //第858行
  7. #endif

TEXT     //定义于winnt.h

[cpp]  view plain copy
  1. #define TEXT(quote) __TEXT(quote)
  2. #ifdef  UNICODE
  3. #define __TEXT(quote) L##quote
  4. #else   /* UNICODE */
  5. #define __TEXT(quote) quote
  6. #endif /* UNICODE */

tchar.h是运行时的头文件,_T、_TEXT 根据_UNICODE来确定宏。

winnt.h是Win的头文件根据,TEXT 根据UNICODE 来确定宏。

如果需要同时使用这3个宏,则需同时定义 UNICODE 和 _UNICODE

VS2010 ,设置:项目--属性--配置属性--常规--字符集--使用Unicode字符集,
那么编译器命令选项中的确同时加入了_UNICODEUNICODE
注:项目--属性--配置属性--C/C++--命令行。


_UNICODE宏用于C运行期头文件,UNICODE宏则用于Windows头文件。

当编译源代码模块时,通常必须同时定义这两个宏。



visu studio编程中L、TEXT、_TEXT、_T 用法说明相关推荐

  1. 解决用C#在visual studio编程中,console一闪而过

    解决用C#在visual studio编程中,console一闪而过. 解决办法: 在主方法的最后加:Console.ReadLine(); 转载于:https://blog.51cto.com/wa ...

  2. 关于char, wchar_t, TCHAR, _T,L,TEXT,_TEXT,LPSTR,LPCSTR,PWSTR,PCWSTR,LPTSTR,LPCTSTR的区别

    #ifdef UNICODE typedef wchar_t TCHAR; #else typedef unsigned char TCHAR; #endif typedef unsigned cha ...

  3. 请问unix高级编程中的open包含哪些用法

    "open" 在 Unix 高级编程中是指一个用于打开文件.设备和网络连接的系统调用.它的用法包括: 打开一个文件:通过 open 函数可以打开一个文件,并获取一个文件描述符. 设 ...

  4. pythonproperty装饰器_实例讲解Python编程中@property装饰器的用法

    取值和赋值 class Actress(): def __init__(self): self.name = 'TianXin' self.age = 5 类Actress中有两个成员变量name和a ...

  5. js高级编程中命名空间的两种用法

    第一种: // 声明一个全局对象Namespace,用来注册命名空间 Namespace = new Object(); // 全局对象仅仅存在register函数,参数为名称空间全路径,如" ...

  6. 如何在安卓(Android studio)项目中导入模块、jar包、和aar包

    安卓(Android studio)编程中,我们常需要引用"别人写的功能",以扩展app的功能,"别人写的功能"主要有模块.jar包.和aar包三种方式. 下面 ...

  7. 关于char, wchar_t, TCHAR, _T(),L,宏 _T、TEXT,_TEXT

    char :单字节变量类型,最多表示256个字符, wchar_t :宽字节变量类型,用于表示Unicode字符, 它实际定义在<string.h>里:typedef unsigned s ...

  8. VS编程中_T与L的区别

    一.L 在字符串前加一个L,如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节. strlen("asd") = ...

  9. TEXT和_T,_TEXT

    VC中_T._TEXT和TEXT宏的作用(来自互联网) 收藏 1.在字符串前加一个L作用. 如:L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用 ...

最新文章

  1. linux多路由表,linux 多网卡多路由表实现策略路由
  2. 机电传动控制第三次作业
  3. 9中继器添加一列序号自增_三个动态自动更新EXCEL序号的小技巧,解决重复编号困扰...
  4. Docker安装mysql8
  5. linux脚本里调执行命令,使用shell的-n/-x/-x执行选项调试Shell脚本
  6. [BZOJ1509][NOI2003]逃学的小孩
  7. CF 839 E-最大团
  8. freetextbox java_FreeTextBox-Java架构师必看
  9. 关于控件开发的几点意见
  10. 透视形变及其校准的方法
  11. 客户服务器网络系统的优缺点,浅析网络存储方案的三种类型及其优缺点
  12. mvn clean install 与 mvn install 的区别
  13. 条件变量对多线程求素数的改进
  14. 与孩子一起学编程09章
  15. python语言count什么意思_python中count函数是什么意思?
  16. uptime查看服务器负载详解
  17. 为什么Windows的文件名不能超过255个英文字符,求解答
  18. adobe imageready怎么扣图
  19. 多个jar合并成一个jar(复制的)
  20. Node-RED系列(十九):工业多图标面板制作

热门文章

  1. Moco接口框架的应用实战
  2. 龙芯1B — 开发硬件介绍
  3. 梦幻西游服务器维护一天,梦幻西游2011年梦幻全年维护更新总结 17173.com网络游戏:《梦幻西游》专区...
  4. javabean:setProperty的四种方法
  5. nexus6 android 6.0 root,Nexus6 root教程_Nexus6一键获取root权限教程
  6. JS 事件(onkeyup、onkeydown、onkeypress、onchange),对文本的事件处理之小总结
  7. IE浏览器被修改怎么办?
  8. 感受HTML5 Audio API带来的视听盛宴
  9. HDU 1114—Piggy-Bank(储蓄罐)(完全背包)
  10. 恒生电子白硕:金融分布式数据库LightDB自主可控、更懂金融、更懂客户