返回值类型的规范
参照 Windows 对程序错误的处理中,函数常用返回值的设置,作为C++开发,也应该参照这一标准。
当调用一个 Windows 函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法
执行任务。如果传递了一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就
会返回一个值,指明该函数在某种程度上运行失败了。表 1 - 1列出了大多数 Windows 函数使用
的返回值的数据类型
数据类型 | 表示失败的值 |
---|---|
void | 该函数的运行不可能失败。Windows 函数的返回值类型很少是 void |
bool | 如果函数运行失败,那么返回值是0,否则返回的是非0值。最好对返回值进行测试,以确定它是0还是非0。不要测试返回值是否为TRUE |
HANDLE | 如果函数运行失败,则返回值通常是 NULL,否则返回值为 HANDLE,用于标识你可以操作的一个对象。注意,有些函数会返回一个句柄值 INVALID_ HANDLE_VALUE,它被定义为 -1。函数的Platform SDK 文档将会清楚地说明该函数运行失败时返回的是 NULL 还是 INVALID_HANDLE_VALID |
PVOID | 如果函数运行失败,则返回值是 NULL,否则返回PVOID,以标识数据块的内存地址 |
LONG/DWORD | 这是个难以处理的值。返回数量的函数通常返回LONG或DWORD。如果由于某种原因,函数无法对想要进行计数的对象进行计数,那么该函数通常返回 0或-1(根据函数而定)。如果调用的函数反悔了LONG/DWORD,那么需要阅读相应的函数说明,以确保能正确检查潜在的错误。 |
一个 Windows
函数返回的错误代码对了解该函数为什么会运行失败尝尝很有用。
从系统内部来讲,当一个Windows函数检测到一个错误时,它会使用一个称为线程本地存储器(thread-local storage)的机制,将相应的错误代码号码与调用的线程关联起来。这将使线程能够互相独立运行,而不会影响各自的错误代码。当函数返回时,它的返回值就能指明一个错误已经发生。若要确定这是个什么错误,则需要调用
GetLastError
函数:
1DWORD GetLastError
返回值类型的规范
https://hodlyounger.github.io/2023/10/27/D_立志博览群书/《Windows核心编程》/《Windows核心编程》1-1-返回值类型的规范/