首页 > 解决方案 > 针对 NULL 或 nullptr 进行测试

问题描述

请参阅此代码:

if (m_hStatusBarPageBreakIcon != NULL)
    VERIFY(DestroyIcon(m_hStatusBarPageBreakIcon));

有时当我选择使用nullptr编译器时会抱怨。但作为一般规则可以使用nullptr吗?这个变量的类型是HICON

标签: c++visual-studio-2019

解决方案


假设编译器支持,检查句柄是否有效,但编译器失败nullptr的唯一情况是句柄未定义为指针的情况。NULLnullptr

正如 Windows 标头定义NULL为,例如0,检查NULL可以用于整数句柄。当然检查整数nullptr是错误的。

对于这种情况,如果某个句柄是整数,或者某些 API 被记录为接受NULL,我仍然会替换NULL,而不是替换为nullptr,而是替换为文字0


推荐阅读