使用BOOL变量犯过的错误

在这里,记录一个自己刚刚犯过的很二的错误

HANDLE hDevice = NULL;
hDevice = CreateFile(szPath,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);

if (INVALID_HANDLE_VALUE == hDevice)
return SAGE_API_ERR_OPEN_DEV_FAILED;
dwDiskNo = TRUE;
return SAGE_API_ERR_SUC;

}

在这段代码前面我定义了bool变量   BOOL dwDiskNo

在这段代码中,我用bool变量记录一种状态。但是,注意,我的bool变量只有在CreateFile的句柄输出为SAGE_API_ERR_SUC的时候,才会BOOL变量赋值。那么,在运行整个函数的时候,只要CreateFile的输出为RUGUOSAGE_API_ERR_SUC,那么BOOL变量就会被赋值为TRUE,而程序接着运行,即使CreateFile的输出INVALID_HANDLE_VALUE ,因为这时候没有对BOOL变量进行赋值,所以BOOL变量会保留着前面一次的执行结果。、,从而造成程序运行时候的BUG。改变一下,根据CreateFile返回值的不同,对BOOL变量进行不同的赋值,程序就正常了。

HANDLE hDevice = NULL;
hDevice = CreateFile(szPath,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);

if (INVALID_HANDLE_VALUE == hDevice)
{
dwDiskNo=FALSE;
return SAGE_API_ERR_OPEN_DEV_FAILED;
}
dwDiskNo = TRUE;
return SAGE_API_ERR_SUC;

你可能感兴趣的:(C++)