任何想法如何解决?真的很有用。我尝试将一致性模式更改为关闭,并且可以正常工作,但是程序的其他部分失败了。还有其他修复方法吗?
有问题的行:
RecursiveDelete(path, L"desktop.ini");
字符串文字是const
数据,在这种情况下L"desktop.ini"
是const wchar_t[12]
(包括空终止符)。
IF函数不更改其第二个参数的内容,然后将该参数应该声明为指向const
数据的指针,例如:
RecursiveDelete(LPWSTR, LPCWSTR)
(又名RecursiveDelete(wchar_t*, const wchar_t*)
)。
如果更改声明不是一个选项(现有的API等),则可以在字符串文字上使用const_cast
(非常小心!):
RecursiveDelete(path, const_cast<LPWSTR>(L"desktop.ini"));
但是,对字符串文字进行非常量复制会更安全:
WCHAR copy[] = L"desktop.ini";
RecursiveDelete(path, copy);