我正在VS 2015上构建64位C ++代码。
DWORD testVar;
testVar= strLen((LPCSTR)src);
// where src is a CString.
看到警告 - C4267'参数':从'size_t'转换为'DWORD',可能会丢失数据。
任何建议都会有所帮助。
答案 0 :(得分:3)
错误消息表明它正在从 size_t
转换。这意味着原始值的类型为size_t
。除非你有理由需要DWORD
,否则你应该保持相同的类型,所以你应该改为
size_t testVar = strLen((LPCSTR)src);
您应该保留相同的数据类型,因为没有机会以这种方式丢失信息,这有助于保持您的应用程序面向未来。如果您使用的是64位整数(可能是size_t
,因为您使用的是64位系统),那么如果您想为32位系统编译,则会浪费空间,并且如果你在size_t
中有超过64位的话,你将没有足够的空间(这可能相当遥远,但现在有一些专门的领域,即使它还不实用,它会有用谁知道)。一般情况下,您不应该在需要之前转换为其他类型,为此您还不需要。