使用通用数据类型

【勇芳软件工作室】汉化HomePreviousNext

如果在代码中使用通用数据类型,则可以通过在头文件的include语句之前定义UNICODE来编译Unicode。要编译ANSI的代码,请省略UNICODE定义。

要转换处理字符串的代码,以便可以为ANSI或Unicode编译,请按照下列步骤操作。

1.将用于文本的所有字符和字符串类型更改为TCHARLPTSTRLPTCH.

2.确保指向非文本数据缓冲区或二进制字节数组的指针使用LPBYTE类型进行编码,而不会错误地使用LPTSTRLPTCH类型。根据需要,通过使用LPVOID将不确定类型的指针明确指定为void指针。

3.指针算术类型无关。如果定义了UNICODE,则使用TCHAR大小的单位产生两个字节的变量,如果未定义UNICODE,则会生成一个字节。使用指针算术总是返回指针指向的元素数量,不管元素大小是一个还是两个字节。以下表达式总是返回元素的数量,而不管是否定义了UNICODE:

cCount = lpEnd - lpStart;

以下表达式确定使用的字节数:

cByteCount = (lpEnd - lpStart) * sizeof(TCHAR);

没有必要更改如下所示的语句,因为指针增量指向下一个字符元素。

chNext = *++lpText;

用宏替换文字字符串和清单字符常量。更改如下所示的表达式。

while(*lpFileName++ != '\\') {

/* .

/* .

/* .

}

在此表达式中使用TEXT宏。

while(*lpFileName++ != TEXT('\\')) {

./*

./*

./*

}

以字母【L】之前的Unicode函数的Unicode形式的字符串。当定义UNICODE时,TEXT宏会导致字符串被评估为L" 【串】 ",否则为【串】 ".以下对Unicode版本lstrlen的调用演示了使用L标识符。

cch == lstrlenW(L"hello world");

为了更容易的管理,将文字字符串移动到资源中,特别是如果它们包含ASCII范围之外的字符(即0x00到0x7F)。

5.只包含标准C库字符串函数的Unicode版本,如标准C功能中所列。

6.将任何依赖255的代码作为字符的最大值进行更改。

当您编译如上所述更改的代码时,编译器将创建与进行更改之前相同的二进制文件。但是,使用UNICODE选项编译代码时,会将其编译为Unicode应用程序。