很不幸的是,我现在正在进行的项目就是使用的TCHAR,在linux下没有tchar.h这个文件,我需要自己在头文件加入

#ifdef UNICODE#define _T L###define _tprintf wprintf#else#define _T#define _tprintf printf#endif  //UNICODE

以下内容转载自:http://blog.csdn.net/superarhow/article/details/1686053

记得某位兄弟曾说过,“一个项目不使用UNICODE编码简直就是灾难”。相信这点很多人都认同吧。

但是这里要说的是,不要以为使用了TCHAR、_T、LPCTSTR、LPTSTR这样的可变宏就是一个满足UNICODE要求的项目, 它在某些时候比使用ANSI编码更糟糕。

偶曾经是TCHAR的忠实信奉者,在某个项目中,非常成功地达到了整个工程定义_UNICODE宏就可以成功编译,没有任何警告错误的水准。但是,当偶准备把偶的项目由ANSI转变成UNICODE时,偶发现:

1. 它加载的dll必须一起升级;

2.它连接的服务器端必须一起升级;

3.和它通讯的客户端必须同时升级;

4.这是最要命的:用户使用ANSI版本保存的文件,没办法在UNICODE版本上打开%$#^&!*这意味着升级时用户的资料必须进行转化,否则会全部丢失!用户是不会理解你的!!

再来看看TCHAR和_T给偶们带来什么好处了?它带来的好处,直接使用UNICODE都可以实现。难道仅仅为了ANSI每个英文字符节省的1个字节就要冒如此大的风险吗?不划算吧!

Java在这点做得很好,毕竟是新生的语言。虽然偶不是很欣赏上班时间喝咖啡的程序员,但不可否认,他们是老手!(包括int和short的长度限定,也非常出色!)

因此,如果您的项目已经使用了TCHAR,那么恭喜您,它将如阴魂一样伴随您的项目,以及您的项目的下一个项目,以及它所有相关项目的整个生命期……就好像Windows的A和W两套API一样……

如果您正开始一个新的项目,请无论如何也要顶住压力,直接使用UNICODE编码!切记!您只需要对您的组员进行10分钟的培训,记住strcpy用wcscpy,sprintf用swprintf代替,常数前加L,就可以了!它不会花您很多时间的,带给您的是稳定和安全!相信偶,没错的!!

不要再使用TCHAR和_T了相关推荐

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

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

  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. VC++中的char,wchar_t,TCHAR(转载)

    VC++中的char,wchar_t,TCHAR 大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,这个问题曾经搞的很混乱.为了统一,有必要把来龙去脉搞 ...

  4. TCHAR字符串的操作

    string , char*,CString ,TCHAR之前的转换实在蛋疼.string就是char,CString 就是 TCHAR,其实就是TCHAR字符串跟char之间的转换. TCHAR的操 ...

  5. CString、TCHAR*、char*转换 cstring与char *的转化(还包含很多种转换)

    stringbasicsystemdeletenulldate <1>CString 转化为 char* [cpp] view plaincopyprint? CString strDat ...

  6. C++的TCHAR字符串和char字符串互转

    C++的TCHAR字符串和char字符串互转 下面用一个例子来演示一下TCHAR和char字符串的互转,主要用到两个函数WideCharToMultiByte和MultiByteToWideChar. ...

  7. What are TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR (etc.)?

    2019独角兽企业重金招聘Python工程师标准>>> http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR- ...

  8. 【转】C++ _T()函数和_L()函数介绍

    _T("")是一个宏,他的作用是让你的程序支持Unicode编码,因为Windows使用两种字符集ANSI和UNICODE, 前者就是通常使用的单字节方式,但这种方式处理象中文这样 ...

  9. Windows 中_T和L

    _T("")是一个宏,定义于tchar.h下.[1] #define _T(x) _ _T(x) #ifdef  _UNICODE #define _ _T(x) L ## x ...

最新文章

  1. R语言中strptime返回值永远为NA的问题
  2. element表格实现树形全选_很实用!word中全选的快捷键介绍及使用方法
  3. 家谱整站源码php_mysql家谱表查询某人所有后代
  4. 子集生成算法——增量构造法
  5. Java有哪些常用的转换类,JavaSE——常用类、类型转换
  6. 起泡排序算法及其算法的验证
  7. [卷积核]空洞卷积(转)
  8. python可视化入门 plotly
  9. java ip地址转数字_ip地址与整数相互转换
  10. BestCoder Round #81 (div.2) B Matrix
  11. 英语四级阅读猜题的技巧
  12. 微软BI 之SSIS 系列 - 使用 Multicast Task 将数据同时写入多个目标表,以及写入Audit 与增量处理信息...
  13. 18华工校赛 小马哥的超级盐水 折半枚举
  14. Spartan-6 FPGA 如何使用ISE下载程序
  15. java生成vcf_Android vcard使用示例,生成vcf文件
  16. 自然常数e的矩阵指数
  17. 常用windows XP 系统命令
  18. 容器上搭建Skywalking
  19. AI语音机器人来袭,改变传统电销模式
  20. 数据结构——实现双栈操作

热门文章

  1. MySQL - 各版本的区别
  2. Eclipse下的Setting property 'source' to '...' did not find a matching property 错误
  3. ATF官方文档翻译(二):Authentication Framework Chain of Trust(身份验证框架和信任链)(2)
  4. 数字电路_2. 各类触发器
  5. 【面经攒人品】蚂蚁金服—反洗钱岗
  6. HTML链接CSS的三种方法
  7. QQmail Multiple Xss Vulnerabilities
  8. 开源许可协议 | GNU GPL
  9. 【无标题】Hadoop HA文件参数配置和HA启动
  10. java从高位到低位输出_任意输入一个正整数,从高位向低位依次输出,或从低位向高位依次输出(数组,调用函数两种方法)...