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

Che*_* OT 6 c++ winapi

我知道使用nullptr更"打字".它可以区分pointer type并且0在函数重载和模板特化方面运行良好.

所以我不确定在每个//初始化用法中替换旧的Win32项目中的NULLto 是否安全?nullptrHANDLEHWNDHINSTNACE

任何建议都会有所帮助.谢谢

Cap*_*ous 10

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

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

  • 有关详细信息,请参阅MSDN的Old New Thing博客:[为什么HANDLE返回的值如此不一致?](http://blogs.msdn.com/b/oldnewthing/archive/2004/03/02/82639.aspx) (2认同)