我正在 VS 2015 上构建 64 位 C++ 代码。
DWORD testVar;
testVar= strLen((LPCSTR)src);
// where src is a CString.
看到警告 - C4267 'argument':从 'size_t' 转换为 'DWORD',可能会丢失数据。
任何建议都会有所帮助。
错误消息说它正在从 size_t
. 这意味着原始值具有 type size_t
。除非你有理由需要一个DWORD
,否则你应该保持相同的类型,所以你应该这样做
size_t testVar = strLen((LPCSTR)src);
您应该保持相同的数据类型,因为这样不会丢失信息,这有助于使您的应用程序永不过时。如果您使用 64 位整数(size_t
可能是,因为您在 64 位系统上),那么如果您想为 32 位系统编译,那么您会浪费空间,而且您不会有如果 a 中有超过 64 位,则有足够的空间size_t
(这可能相距甚远,但现在有一些专门的领域会很有用,即使它还不实用,所以谁知道)。通常,除非需要,否则您不应该转换为不同的类型,为此您还不需要。