return ((fileatr & FILE_ATTRIBUTE_DIRECTORY) == 0);

return ((fileatr & FILE_ATTRIBUTE_DIRECTORY) == 0);

本文关键字:fileatr DIRECTORY FILE return ATTRIBUTE      更新时间:2023-10-16

我正在尝试检查文件是否存在,但我代码的最后一部分给了我这个错误:

内存位置 0x006FF74C 处的无符号长 (__stdcall*((无效(。

bool checkfile(char* filepath) {
static DWORD __stdcall fileatr = GetFileAttributes(filepath);
if (fileatr = INVALID_FILE_ATTRIBUTES) {
throw GetLastError;
}
return ((fileatr &  FILE_ATTRIBUTE_DIRECTORY) == 0);    
}

修复了提到的汉斯和埃尔杰的 2 件事。

#include <iostream>
#include <Windows.h>
bool checkfile(TCHAR* filepath) {
DWORD fileatr = GetFileAttributes(filepath);
if (fileatr == INVALID_FILE_ATTRIBUTES) { // fixed. (= mean assign, == mean compare)
throw GetLastError(); // fixed.
}
return ((fileatr &  FILE_ATTRIBUTE_DIRECTORY) == 0);
}
int main()
{
try {
checkfile(_T("test.not.exist.txt"));
}
catch (DWORD lasterror) {
std::cout << "catch GetLastError() : " << lasterror << std::endl;
}
return 0;
}