标题已经说过了。
看现实世界的例子见:https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-findexecutablea
返回HINSTANCE - 这是一种指针类型 - 在某些情况下可以采用预定义的错误值。
最好是,我想打开一个HINSTANCE并且不依靠const_cast
或c式演员来做到这一点 - 如何实现?
示例代码:
bool test_result(const HINSTANCE ptr) {
switch (ptr) {
case 2 /*SE_ERR_FNF*/:
return false;
default:
return true;
}
}
我自己做了一些测试,因为返回类型没有多大意义,但无论出于何种原因,WinAPI确实返回void*
。在这种情况下,实际返回值是void*
指向的地址。所以你可以使用reinterpret_cast
投射它并打开它:
bool test_result(const HINSTANCE ptr) {
switch (reinterpret_cast<uintptr_t>(ptr)) {
case 2 /*SE_ERR_FNF*/:
return false;
default:
return true;
}
}
用于将指针(HINSTANCE只是一个空*)转换为int reinterpret_cast
到uintptr_t
。像这样:
bool test_result(const HINSTANCE ptr)
{
switch (reinterpret_cast<uintptr_t>(ptr))
{
case 2 /*SE_ERR_FNF*/:
return false;
default:
return true;
}
}