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

数据类型—C++基础篇

2008-06-28 15:40 239 查看
1,DWORD

32位无符号整形量

相当于unsigned long/unsigned int ,这是一个双字节长度的Byte型数据类型。即此类型的变量在内存中占用四个字节。

2,UInt64 结构

表示 64 位无符号整数。此结构不符合 CLS。

UInt64 值类型表示值介于 0 到 18,446,744,073,709,551,615 之间的无符号整数。

3,BYTE

1 byte = 8 bit

4,HRESULT 类型

大多数 COM 函数以及一些接口成员函数的返回值类型均为 HRESULT 类型。HRESULT 类型的返回值反映了函数中的一些情况,其类型定义规范如下:
31 30 29 28 16 15 0

|-----|--|------------------------|-----------------------------------|

类别码 (30-31) 反映函数调用结果:

00 调用成功

01 包含一些信息

10 警告

11 错误

自定义标记(29) 反映结果是否为自定义标识,1 为是,0 则不是;

操作码 (16-28) 标识结果操作来源,在 Windows 平台上,其定义如下:

#define FACILITY_WINDOWS 8

#define FACILITY_STORAGE 3

#define FACILITY_RPC 1

#define FACILITY_SSPI 9

#define FACILITY_WIN32 7

#define FACILITY_CONTROL 10

#define FACILITY_NULL 0

#define FACILITY_INTERNET 12

#define FACILITY_ITF 4

#define FACILITY_DISPATCH 2

#define FACILITY_CERT 11

操作结果码(0-15) 反映操作的状态,WinError.h 定义了 Win32 函数所有可能返回结果。

Description:

The HRESULT data type is a 32-bit value that is used to describe an error or warning.

typedef LONG HRESULT;

Most MAPI interface methods and functions return
HRESULT values to provide detailed result information.
HRESULT values are also used widely in OLE interface
methods.

These procedures return an int
return code. The return code is 0 when successful or
a non-zero HRESULT when an error occurs. An HRESULT
is an OLE error code of the hexadecimal form
0x800nnnnn, but when it is returned as an int value
it has the form -214nnnnnnn.

以下是一些经常用到的返回值和宏定义:

HRESULT含义
S_OK0x00000000成功
S_FALSE0x00000001函数成功执行完成,但返回时出现错误
E_INVALIDARG0x80070057参数有错误
E_OUTOFMEMORY0x8007000E内存申请错误
E_UNEXPECTED0x8000FFFF未知的异常
E_NOTIMPL0x80004001未实现功能
E_FAIL0x80004005没有详细说明的错误。一般需要取得 Rich Error 错误信息(注1)
E_POINTER0x80004003无效的指针
E_HANDLE0x80070006无效的句柄
E_ABORT0x80004004终止操作
E_ACCESSDENIED0x80070005访问被拒绝
E_NOINTERFACE0x80004002不支持接口


图一、HRESULT 的结构

HRESULT 其实是一个双字节的值,其最高位(bit)如果是0表示成功,1表示错误。具体参见 MSDN 之"Structure of
COM Error Codes"说明。我们在程序中如果需要判断返回值,则可以使用比较运算符号;switch开关语句;也可以使用VC提供的宏:

HRESULT hr = 调用组件函数;

if( SUCCEEDED( hr ) ){...} // 如果成功
......

if( FAILED( hr ) ){...} // 如果失败

5,LPCTSTR

L表示long指针,P表示这是一个指针,C表示是一个常量,STR表示字符串

LPCTSTR就表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。

同样, LPCSTR就只能是一个ANSI字符串, 在程序中我们大部分时间要使用带T的类型定义。LPCTSTR == const TCHAR *
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: