从 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 (这可能还很遥远,但现在有一些专门领域它甚至有用虽然它还不实用所以谁知道)。一般来说,除非需要,否则你不应该转换为不同的类型,为此你还不需要。
我正在 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 (这可能还很遥远,但现在有一些专门领域它甚至有用虽然它还不实用所以谁知道)。一般来说,除非需要,否则你不应该转换为不同的类型,为此你还不需要。