0
를 추적 내 OpenFile 함수가 파일 이름 변수가 손상되고 호출 된 후노하우 변수 부패
// Datafile.h
class CDataFile : public CStdioFile
{
public:
CDataFile(void);
~CDataFile(void);
int OpenFile(LPCWSTR FileName);
}
을 다음과 같이 CStdioFile에서 파생 된 MFC 클래스를 선언합니다.
int CDataFile::OpenFile(LPCWSTR FileName)
{
m_OpenFlags = CFile::modeNoTruncate | CFile::modeReadWrite;
// Before open. FileName = "c:\afile.txt"
if (!Open(FileName, m_OpenFlags, NULL))
{
return GetLastError();
}
//After open. FileName = ""ﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮﻮވĚᗸ÷ᘸ÷㼠碞"
// other stuff
}
}
하지만 파일을 열기 전에
WCHAR FileName[] = _T("c:\\afile.txt");
에 파일 이름을 변경하는 경우 변수 파일 이름은 그대로 남아있다. 이전에 MFC/Winapi를 사용하여이 동작을 보았으며 항상 LPCWSTR 또는 CString 대신 문자 배열을 사용하여 작업했습니다. 왜 이런 일이 생길까요? VS Debugger를 사용하여 이와 같은 문제를 추적하는 가장 좋은 방법은 무엇입니까? 부패는 Filecore.cpp
if (!CFile::Open(lpszFileName, (nOpenFlags & ~typeText), pException))
return FALSE;
(http://msdn.microsoft.com/en-us/library/hwbccf8z.aspx) LPCTSTR이 아닌 LPCWSTR (일반 문자와 넓은 문자열)이 필요하다고합니다. 어쩌면 그것이 문제일까요? –
나는 그렇게 생각하지 않는다 "typedef LPCWSTR LPCTSTR;" – Canacourse