文本数据类型强调说明

来源:互联网 发布:免费wifi无线上网软件 编辑:程序博客网 时间:2024/04/28 19:09

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字符的指针。



原创粉丝点击