以下代码无效。在这里,我想检查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;
}
答案 0 :(得分:10)
我使用较短的表格:
if (lpClassName == NULL || lpClassName[0] == 0)
如果您需要的只是测试为空,则无需获取字符串的整个长度。如果指针为空,短路规则将阻止语句的后半部分引起错误。
除此之外,我希望你问题中的代码能够正常运行。
编辑:在这种情况下,指针似乎来自CreateWindowEx,这意味着它可能不是实际的字符串指针而是ATOM值。区分的方法是检查高位是否全为零。 Microsoft对资源ID使用相同的约定,并提供IS_INTRESOURCE
macro来测试此条件。