【发布时间】:2019-01-31 07:12:55
【问题描述】:
我有一个程序可以读取目录中的文件名。该代码在 CodeBlocks IDE 中运行,但是当我在 Visual Studio 中运行它时,同样会出现调试断言错误。
我在 预处理器属性 中添加了 _CRT_SECURE_NO_WARNINGS,因为没有它 strerror() 会给我一个错误。
#include <windows.h>
#include <stdio.h>
void listdirs(wchar_t *dir, wchar_t *mask)
{
wchar_t *fspec1 = { L'\0' }, *fname = { L'\0' };
WIN32_FIND_DATA dta;
HANDLE hDta;
DWORD dLastError;
LPCWSTR fspec = reinterpret_cast<LPCWSTR>(fspec1);
char *buff = { '\0' };
swprintf(fspec1, 100, L"%s/%s", dir, mask);
if ((hDta = FindFirstFile(fspec, &dta)) == INVALID_HANDLE_VALUE) {
dLastError = GetLastError();
printf("The error : %s\n", strerror(dLastError));
}
else {
do {
if (!(dta.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
printf("%ws\n", dta.cFileName);
}
else
{
if (wcscmp(dta.cFileName,L".") !=0 && wcscmp(dta.cFileName,L"..")!=0)
{
swprintf(fname, 100, L"%s", dta.cFileName);
listdirs(fname, mask);
}
}
} while (FindNextFile(hDta, &dta));
FindClose(hDta);
}
}
int main (int argc, char *argv[])
{
listdirs(L"C:\\windows\\system32\\Tasks", L"\\.*");
return 0;
}
如果无法访问文件夹或打印文件名,则输出应打印错误消息。在任何一种情况下,我都只会得到一个调试断言错误。
【问题讨论】:
-
是时候在调试器中运行调试构建,在断言发生时捕获断言并在 您的 代码中定位它发生的位置。
标签: c visual-studio debugging visual-studio-debugging