4

下面的代码不起作用。在这里,我想检查 lpClassName 是 null 还是空。

static HRESULT WINAPI ExampleMethod(
    __in_opt  LPCTSTR lpClassName)
{
    //code to check whether lpClassName is null or empty
    if( lpClassName == 0)
        return 0;

    if(*lpClassName) == L'\0')
        return 0;           
}
4

1 回答 1

11

我使用更短的形式:

if (lpClassName == NULL || lpClassName[0] == 0)

如果您只需要测试是否为空,则无需获取字符串的整个长度。如果指针为空,短路规则将防止语句的后半部分导致错误。

除此之外,我希望您问题中的代码也能正常工作。

编辑:在这种情况下,指针似乎来自 CreateWindowEx,这意味着它可能不是实际的字符串指针,而是 ATOM 值。区分的方法是检查高位是否全为零。Microsoft 对资源 ID 使用相同的约定,并提供IS_INTRESOURCE来测试这种情况。

于 2013-08-19T13:26:24.120 回答