从 size_t 转换为 DWORD,可能会丢失数据

Conversion from size_t to DWORD, possible loss of data

我正在 VS 2015 上构建 64 位 C++ 代码。

DWORD testVar;
testVar= strLen((LPCSTR)src);
// where src is a CString.

看到警告 - C4267 'argument': 从 'size_t' 转换为 'DWORD',可能丢失数据。

任何建议都会有所帮助。

错误信息说它正在从size_t转换。这意味着原始值的类型为 size_t。除非你有理由需要 DWORD 代替,否则你应该保持相同的类型,所以你应该改为

size_t testVar = strLen((LPCSTR)src);

您应该保留相同的数据类型,因为这样就不会丢失信息,而且它有助于让您的应用程序永不过时。如果你使用 64 位整数(size_t 可能是,因为你在 64 位系统上),那么如果你想为 32- 编译,你会浪费 space位系统,如果你在 size_t 中有超过 64 位,你将没有足够的 space (这可能还很遥远,但现在有一些专门领域它甚至有用虽然它还不实用所以谁知道)。一般来说,除非需要,否则你不应该转换为不同的类型,为此你还不需要。