您的位置:首页 > 编程语言

字符透明编程自总结

2011-11-10 16:03 281 查看
对字符透明编程

字符定义
字符串字面值表示
字符串处理函数

// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

VC++ 对字符透明编程

字符定义

在crtdefs.h头文件中如下定义:

typedef unsigned short wchar_t;

在 tchar.h头文件如下定义:

// _UNICODE 版

#ifndef	__TCHAR_DEFINED
typedef	wchar_t		_TCHAR;
typedef	wchar_t		_TSCHAR;
typedef	wchar_t		_TUCHAR;
typedef	wchar_t		_TXCHAR;
#define  __TCHAR_DEFINED
#endif

typedef	wchar_t		TCHAR;

//	非_UNICODE 版

#ifndef	__TCHAR_DEFINED
typedef	char                 _TCHAR;
typedef	signed char          _TSCHAR;
typedef	unsigned char        _TUCHAR;
typedef	char                 _TXCHAR;
#define	__TCHAR_DEFINED
#endif

typedef	char		TCHAR;


// 字符定义总结如下:

自适应		非UNICODE                 UNICODE
_TCHAR		char                    wchar_t
_TSCHAR		signed char             wchar_t
_TUCHAR		unsigned char           wchar_t
_TXCHAR		char                    wchar_t
TCHAR		char                    wchar_t


字符串字面值表示

非UNICODE 字符串表示: " "

UNICODE 字符串表示: L" "

// ---------------------------------------------------------

在tchar.h头文件如下定义:

// _UNICODE 版
#define	__T(x)		L ## x
//	非_UNICODE 版
#define	__T(x)		x

// -----------------------------------------
#define	 _T(x)            __T(x)
#define  _TEXT(x)         __T(x)
// 字符串字面值表示:
// 非UNICODE:      " "
// UNICODE  :     L" "

// 字符串字面值表示,总结如下:

自适应        非UNICODE           UNICODE
__T(x)            x               L ## x
_T(x)             x               L ## x
_TEXT(x)          x               L ## x


字符串处理函数

自适应 ANSI UNICODE

_tcs开头 str开头 wcs开头

// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

windows api 字符透明编程

头文件 winnt.h如下定义:

typedef char CHAR;

typedef unsigned short WCHAR;

01.//
02.// Neutral ANSI/UNICODE types and macros
03.//
04.
05.#ifdef     UNICODE                       // 以下是Unicode相关定义
06.
07.#ifndef    _TCHAR_DEFINED
08.typedef    WCHAR   TCHAR,   *PTCHAR;     // 定义基本通用类型
09.#define    _TCHAR_DEFINED
10.#endif     /* !_TCHAR_DEFINED */
11.
12.typede    LPWSTR   LPTCH,   PTCH;        // 定义各种通用字符串指针
13.typedef   LPWSTR   PTSTR,   LPTSTR;
14.typedef   LPCWSTR  LPCTSTR;
15.typedef   LPWSTR   LP;                   // 奇怪,为什么要定义它?
16.
17.#define   __TEXT(quote)     L##quote     // 定义字符串常量宏
18.
19.#else     /* UNICODE */                  // 以下是ANSI相关定义
20.
21.#ifndef    _TCHAR_DEFINED
22.typedef    char    TCHAR,   *PTCHAR;     // 定义基本通用类型
23.#define    _TCHAR_DEFINED
24.#endif     /* !_TCHAR_DEFINED */
25.
26.typedef    LPSTR   LPTCH,   PTCH;        // 定义各种通用字符串指针
27.typedef    LPSTR   PTSTR,   LPTSTR;
28.typedef    LPCSTR  LPCTSTR;
29.#define    __TEXT(quote)    quote        // 定义字符串常量宏
30.
31.#endif     /* UNICODE */
32.
33.#define    TEXT(quote)      __TEXT(quote)// 定义另一个字符串常量宏


现总结如下:

解释                           自适应                  非UNICODE           UNICODE
字符定义                       TCHAR                CHAR               WCHAR
字符指针                       PTCHAR               CHAR *             WCHAR *
字符串指针                     LPTCH & PTCH         LPSTR & PSTR       LPWSTR & PWSTR
字符串指针                     LPTSTR & PTSTR       LPSTR & PSTR       LPWSTR & PWSTR
静态字符串指针                 LPCTSTR & PCTSTR     LPCSTR & PCSTR     LPCWSTR & PCWSTR
字符串表示                     __TEXT(quote)        quote              L ## quote
字符串表示                     TEXT(quote)          quote              L ## quote
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: