写了一个函数编译报错 大家帮我看下呢。。
BOOL ClearDir(CString strDir){
WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile(strDir, &FindFileData);
if(hFind == INVALID_HANDLE_VALUE){
FindClose(hFind);
return TRUE;
}
do{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
CString strPath(FindFileData.cFileName);
if((0 == strPath.Compare(_T("."))) || (0 == strPath.Compare(_T("..")))){
continue;
}
ClearDir(strPath);
}
else
{
DeleteFile(strPath);
}
}while(FindNextFile(hFind, &FindFileData));
FindClose(hFind);
}
DeleteFile(strPath);说strPath 无法识别。
[解决办法]
CString strPath(FindFileData.cFileName);
变量作用域的问题
strPath变量只在下面的语句段内有效,其余地方无效。
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
CString strPath(FindFileData.cFileName);
if((0 == strPath.Compare(_T("."))) || (0 == strPath.Compare(_T("..")))){
continue;
}
解决办法,是否可以把这个变量拿到最开始声明。
比如:CString strPath;
。。。。。
然后改为下面的:
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
strPath=FindFileData.cFileName;
if((0 == strPath.Compare(_T("."))) || (0 == strPath.Compare(_T("..")))){
continue;
}