The*_*ple 3 c++ windows warnings types
所以,当我收到这样的警告时,我从来不知道该怎么做,所以我想要其他专业程序员的建议.当我得到那种警告(而不是错误)
警告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);
Run Code Online (Sandbox Code Playgroud)
问题显然是wcslen()返回size_t,authIdent.PasswordLength是ULONG.照顾这些警告的最佳方法是什么?是否有winapi函数,他们希望我使用而不是wcslen()?
编辑:感谢大家的所有好评!
每个编译器警告需要根据具体情况进行处理.
您在平台上收到此警告,因为ULONG它是32位无符号,并且std::size_t是64位无符号.
但鉴于(1)你的字符串不太可能比a长ULONG,而且(2)两个无符号类型之间的转换总是很明确,我会做实用的事情并使用static_cast:
static_cast<ULONG>(wcslen(pszPwd))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |