将MS HANDLE初始化为nullptr是否安全?

时间:2014-04-23 02:24:55

标签: c++ winapi

我知道使用nullptr更“打字”。它可以区分pointer type0,并且在函数重载和模板特化方面效果很好。

所以我不确定在每个NULL / nullptr / HANDLE中将HWND替换为旧版Win32项目中的HINSTNACE是否安全初始化用法?

任何建议都会有所帮助。感谢

2 个答案:

答案 0 :(得分:8)

对于解析为指针类型的句柄,您可以使用nullptr而不是NULL。很多句柄类型都是typedef'作为指针,所以你不应该遇到太多问题。

表示可以使用NULLnullptr。一些调用返回INVALID_HANDLE_VALUE,它在VS2013中定义为((HANDLE)(LONG_PTR)-1),并依赖空值来指示无效/未打开句柄可能会导致问题。例如,CreateFile返回INVALID_HANDLE_VALUE而不是零或空值。代码中假定为空值的所有位置都表示未打开的句柄可能会导致问题。

答案 1 :(得分:2)

是。 HWND,HANDLE等等,大多数人决定void *,因此没有理由不使用nullptr。话虽如此,使用NULL可能会被认为与API更加一致,但它不会产生任何影响。