warning C4244: “=”: 从“ULONGLONG”转换到“DWORD”,可能丢失数据
分析:
m_nTotalBytes = m_File.GetLength();
m_File.GetLength();返回的是ULONGLONG, 而m_nTotalBytes, 是DWORD ,不匹配。
ULONGLONG是64位的,DWORD是32位的大概4294967295,只要大于4G,转换大于这个就会造成数据错误,如果小于,则没关系。
解决办法:
估算了一下一个文件4G
1、强制转换;m_nTotalBytes=(DWORD)m_File.GetLength();
2、屏蔽编译警告:在h文件加入#pragma warning(disable:4244)
3、重新定义:ULONGLONG m_nTotalBytes;
m_nTotalBytes = m_File.GetLength();