不要再使用TCHAR和_T了
很不幸的是,我现在正在进行的项目就是使用的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了相关推荐
- 关于char, wchar_t, TCHAR, _T(),L,宏 _T、TEXT,_TEXT
char :单字节变量类型,最多表示256个字符, wchar_t :宽字节变量类型,用于表示Unicode字符, 它实际定义在<string.h>里:typedef unsigned s ...
- 关于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 ...
- VC++中的char,wchar_t,TCHAR(转载)
VC++中的char,wchar_t,TCHAR 大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,这个问题曾经搞的很混乱.为了统一,有必要把来龙去脉搞 ...
- TCHAR字符串的操作
string , char*,CString ,TCHAR之前的转换实在蛋疼.string就是char,CString 就是 TCHAR,其实就是TCHAR字符串跟char之间的转换. TCHAR的操 ...
- CString、TCHAR*、char*转换 cstring与char *的转化(还包含很多种转换)
stringbasicsystemdeletenulldate <1>CString 转化为 char* [cpp] view plaincopyprint? CString strDat ...
- C++的TCHAR字符串和char字符串互转
C++的TCHAR字符串和char字符串互转 下面用一个例子来演示一下TCHAR和char字符串的互转,主要用到两个函数WideCharToMultiByte和MultiByteToWideChar. ...
- What are TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR (etc.)?
2019独角兽企业重金招聘Python工程师标准>>> http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR- ...
- 【转】C++ _T()函数和_L()函数介绍
_T("")是一个宏,他的作用是让你的程序支持Unicode编码,因为Windows使用两种字符集ANSI和UNICODE, 前者就是通常使用的单字节方式,但这种方式处理象中文这样 ...
- Windows 中_T和L
_T("")是一个宏,定义于tchar.h下.[1] #define _T(x) _ _T(x) #ifdef _UNICODE #define _ _T(x) L ## x ...
最新文章
- R语言中strptime返回值永远为NA的问题
- element表格实现树形全选_很实用!word中全选的快捷键介绍及使用方法
- 家谱整站源码php_mysql家谱表查询某人所有后代
- 子集生成算法——增量构造法
- Java有哪些常用的转换类,JavaSE——常用类、类型转换
- 起泡排序算法及其算法的验证
- [卷积核]空洞卷积(转)
- python可视化入门 plotly
- java ip地址转数字_ip地址与整数相互转换
- BestCoder Round #81 (div.2) B Matrix
- 英语四级阅读猜题的技巧
- 微软BI 之SSIS 系列 - 使用 Multicast Task 将数据同时写入多个目标表,以及写入Audit 与增量处理信息...
- 18华工校赛 小马哥的超级盐水 折半枚举
- Spartan-6 FPGA 如何使用ISE下载程序
- java生成vcf_Android vcard使用示例,生成vcf文件
- 自然常数e的矩阵指数
- 常用windows XP 系统命令
- 容器上搭建Skywalking
- AI语音机器人来袭,改变传统电销模式
- 数据结构——实现双栈操作
热门文章
- MySQL - 各版本的区别
- Eclipse下的Setting property 'source' to '...' did not find a matching property 错误
- ATF官方文档翻译(二):Authentication Framework Chain of Trust(身份验证框架和信任链)(2)
- 数字电路_2. 各类触发器
- 【面经攒人品】蚂蚁金服—反洗钱岗
- HTML链接CSS的三种方法
- QQmail Multiple Xss Vulnerabilities
- 开源许可协议 | GNU GPL
- 【无标题】Hadoop HA文件参数配置和HA启动
- java从高位到低位输出_任意输入一个正整数,从高位向低位依次输出,或从低位向高位依次输出(数组,调用函数两种方法)...