跪求原因?快来围观!
//这代码编译通过,运行删除失败,换了编译器还是不行,到底是什么问题,跪求解???????
//再次谢谢zzbinfo大哥
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//打开文件
#define open_file(x)\
{\
hFile_##x=::CreateFile(file_##x,GENERIC_READ,FILE_SHARE_READ, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);\
if(hFile_##x==INVALID_HANDLE_VALUE)\
{\
printf("无法dd打开文件 %s!",file_##a);\
system("pause");\
exit(1);\
}\
hMap_##x=::CreateFileMapping(hFile_##x,NULL,PAGE_READONLY,0,0,NULL);\
lpBase_##x=::MapViewOfFile(hMap_##x,FILE_MAP_READ,0,0,0);\
}
//关闭文件
#define close_file(x)\
{\
::UnmapViewOfFile(lpBase_##x);\
CloseHandle(hFile_##x);\
}
int main(void)
{
HANDLE hFile_b;
HANDLE hMap_b;
HANDLE lpBase_b;
char *file_b="b.txt";
char *file_a="b.txt";
open_file(b);//打开B文件
close_file(b);//关闭文件B
if(remove("b.txt"))
printf("删除失败\n");
else printf("OK \n");
}
[解决办法]
哈哈,你咋还没有弄成呀,不行就把你的全部文件发过来,我看看。zzbinfo#163.com
[解决办法]
XT,这么个需求,发了300分的帖子都没有搞定啊?把工程发我信箱,我来look一下。cbfans at 163 dot com
[解决办法]
晕,少关了一个句柄,文件没有关闭,所以删除不了,更改如下即可:
//关闭文件
#define close_file(x)\
{\
if(lpBase_##x) ::UnmapViewOfFile(lpBase_##x);\
if(hMap_##x) CloseHandle(hMap_##x);\
if(hFile_##x) CloseHandle(hFile_##x);\
}
别忘了,CreateFileMapping打开的句柄没有CloseHandle.