文本数据类型强调说明

6 篇文章 0 订阅

TCHAR/_TCHAR: 是微软特有的通用文本数据类型,可以根据编译选项映射为Unicode字符、MBCS字符或是ANSI字符。使用这种字符类型编写的通用代码可以编译为Unicode、MBCS、ANSI三种字符集中的任何一种。 


tchar.h是微软特有的C运行时库头文件,它定义了通用文本类型_TCHAR,当我们没有定义__STDC__预编译符号时(默认时,VC没有定义此符号),表示不需要遵从ANSI命名要求。在这中情况下,如果通用文本数据类型还没有定义,tchar.h文件也会定义另外一个符号TCHAR作为其别名。 

winnt.h 是微软特定的Win32操作系统头文件,把通用文本数据类型定义为TCHAR。此文件是操作系统特定的,

简单的说:C运行时库定义了_TCHAR类型, 而Windows操作系统定义了TCHAR类型


规范点说明:

1、当编写基于Windows的COM组件时,在组件内部,通常我们应该使用TCHAR字符类型来表示组件内部使用的字符

2、与操作系统交互的所有字符也应该使用TCHAR


OLECHAR:    是COM使用的字符数据类型,用来描述COM在特定平台上使用的文本数据类型。COM中的文本字符串是以NUL字符结尾的OLECHAR字符数组,对应的字符串指针是LPOLESTR 和LPCOLESTR

COM接口方法的文本字符串参数应该用LPOLESTR 或LPCOLESTR

BSTR:COM组件使用的特殊字符串类型,它是一种带长度前缀、含OLECHAR字符数组的指针。特性如下:

            a、  它指向字符数组的第一个字符,长度是以整数存储在数组中紧接第一个字符前面的位置

            b、字符数组以NUL字符结束

           c、长度以字节为单位,而不是字符,不包括终止字符NUL

           d、字符数组内部可能包括有效的NUL字符

            e、必须使用SysAllocString和SysFreeString函数进行分配和释放

            f、NULL的BSTR指针表示空字符串

            g、BSTR是非引用计数,两次引用同一字符串的内容必须指向两个单独的BSTR。即:拷贝一个BSTR意味这字符串的复制操作,而不是简单的指针拷贝。


CComBSTR:BSTR的ATL封装类,将语义繁多的BSTR的细节封装成一个可重用类。其内部成员是一个BSTR类型的变量


         

规范点说明:

3、如果需要调用COM方法,并传递一些字符串,必须根据方法的参数向其传递OLECHAR或者BSTR字符串或OLECHAR*

4、如果是其他语言定义的接口,一般来说字符串类型应该是BSTR数据类型。

5、OLECHAR* 和BSTR不能等同使用,OLECHAR* 是以NUL结尾的字符串指针, 而BSTR是一个以NUL结尾但中间可能有一个或多个NUL字符的指针。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值