【发布时间】:2017-10-17 14:46:03
【问题描述】:
所以,当我收到这样的警告时,我一直不知道该怎么办,所以我想要其他专业程序员的建议。当我收到此类警告(不是错误)时
警告 C4267:“=”:从“size_t”转换为“ULONG”,可能会丢失 数据
(省略其他上下文代码)
wchar_t pszName[CREDUI_MAX_USERNAME_LENGTH + 1] = L"user";
wchar_t pszPwd[CREDUI_MAX_PASSWORD_LENGTH + 1] = L"password";
// ..
COAUTHIDENTITY authIdent;
// ...
memset(&authIdent, 0, sizeof(COAUTHIDENTITY));
authIdent.PasswordLength = wcslen(pszPwd);
authIdent.UserLength = wcslen(pszName);
问题显然是 wcslen() 返回 size_t 而 authIdent.PasswordLength 是 ULONG。处理此类警告的最佳方法是什么?他们希望我使用 winapi 函数来代替 wcslen() 吗?
编辑:感谢大家的所有精彩回复!
【问题讨论】:
-
将变量类型改为
size_t? -
static_cast<ULONG>(wcslen())会照顾它吗? -
@NathanOliver 这样做需要我编辑 WinAPI 结构/类。很确定那将是最糟糕的事情。
标签: c++ windows types warnings