0

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

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

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

任何建议都会有所帮助。

4

1 回答 1

3

错误消息说它正在 size_t. 这意味着原始值具有 type size_t。除非你有理由需要一个DWORD,否则你应该保持相同的类型,所以你应该这样做

size_t testVar = strLen((LPCSTR)src);

您应该保持相同的数据类型,因为这样不会丢失信息,这有助于使您的应用程序永不过时。如果您使用 64 位整数(size_t可能是,因为您在 64 位系统上),那么如果您想为 32 位系统编译,那么您会浪费空间,而且您不会有如果 a 中有超过 64 位,则有足够的空间size_t(这可能相距甚远,但现在有一些专门的领域会很有用,即使它还不实用,所以谁知道)。通常,除非需要,否则您不应该转换为不同的类型,为此您还不需要。

于 2017-08-29T16:53:35.177 回答