六个准则:
- 将文本串视为字符数组,而不是chars数组或者字节数组。
- 将通用数据类型(如 TCHAR 和 PTSTR )用于文本字符和字符串。
- 将显式数据类型(如 BYTE 和 PBYTE )用于字节、字节指针和数据缓存。
- 将 TEXT 宏用于原义字符和字符串。
- 执行全局性替换(如用 PTSTR 替换PSTR )。
- 字符串运算公式: sizeof(szBuffer) = nCharacters * sizeof(TCHAR)。比如传递缓存大小应该用 sizeof(szBuffer)/sizeof(TCHAR) 替换 sizeof(szBuffer);分配内存用 nCharacters * sizeof(TCHAR )替换 nCharacters。
一些说明:
RTL库:typedef unsigned short wchar_t;
_UNICODE宏:wcs 替换 str,比如 wcscmp() 替换 strcmp();Tchar.h 替换 String.h
Generic-Text Data Type Mappings
| SBCS (_UNICODE, _MBCS not defined) | _MBCS defined | _UNICODE defined |
---|---|---|---|
_TCHAR | char | char | wchar_t |
_tfinddata_t | _finddata_t | _finddata_t | _wfinddata_t |
_tfinddata64_t | __finddata64_t | __finddata64_t | __wfinddata64_t |
_tfinddatai64_t | _finddatai64_t | _finddatai64_t | _wfinddatai64_t |
_TINT | int | int | wint_t |
_TSCHAR | signed char | signed char | wchar_t |
_TUCHAR | unsigned char | unsigned char | wchar_t |
_TXCHAR | char | unsigned char | wchar_t |
_T or _TEXT | No effect (removed by preprocessor) | No effect (removed by preprocessor) | L (converts following character or string to its Unicode counterpart) |
Windows库:
UNICODE宏:xxA() 或者 xxW()
PTSTR --> PSTR 或者 PWSTR (同LP或者PC或者LPC)
TCHAR --> CHAR 或者 WCHAR
TBYTE --> BYTE 或者 WBYTE