我知道使用nullptr
更“打字”。它可以区分pointer type
和0
,并且在函数重载和模板特化方面效果很好。
所以我不确定在每个NULL
/ nullptr
/ HANDLE
中将HWND
替换为旧版Win32项目中的HINSTNACE
是否安全初始化用法?
任何建议都会有所帮助。感谢
答案 0 :(得分:8)
对于解析为指针类型的句柄,您可以使用nullptr
而不是NULL
。很多句柄类型都是typedef
'作为指针,所以你不应该遇到太多问题。
不表示可以使用NULL
或nullptr
。一些调用返回INVALID_HANDLE_VALUE
,它在VS2013中定义为((HANDLE)(LONG_PTR)-1)
,并依赖空值来指示无效/未打开句柄可能会导致问题。例如,CreateFile
返回INVALID_HANDLE_VALUE
而不是零或空值。代码中假定为空值的所有位置都表示未打开的句柄可能会导致问题。
答案 1 :(得分:2)
是。 HWND,HANDLE等等,大多数人决定void *
,因此没有理由不使用nullptr
。话虽如此,使用NULL
可能会被认为与API更加一致,但它不会产生任何影响。