And*_*kle 5 mfc code-analysis visual-studio-2017
我已阅读此链接,因此对警告的含义有基本的了解。
当我对 MFC 项目运行代码分析时,我收到一系列警告:
d:\my programs\2017\meetschedassist\meeting schedule assistant\synchexclusionsdlg.cpp(295): warning C6031: Return value ignored: 'ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW'.
d:\my programs\2017\meetschedassist\meeting schedule assistant\synchexclusionsdlg.cpp(297): warning C6031: Return value ignored: 'ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW'.
Run Code Online (Sandbox Code Playgroud)
例如,它抱怨这个代码片段:
if (iImage == IMG_CHECKED)
strText.LoadString(IDS_STR_YES);
else
strText.LoadString(IDS_STR_NO);
Run Code Online (Sandbox Code Playgroud)
我已阅读LoadString的帮助文档,讽刺的是他们的示例是这样做的:
CAtlString s;
s.LoadString(IDS_APP_TITLE);
Run Code Online (Sandbox Code Playgroud)
他们也不测试返回值。:)
现在,我意识到我可以尝试修复我的代码并测试返回值 - 这将花费我很长时间!我意识到我可以下意识地忽略这些警告。
但是是否有可能在分析过程中抑制这个特定的警告(关于C6031 CString::LoadString)?
我尝试将其添加到我的stdafx.h(基于评论):
#pragma warning( disable : 6031)
Run Code Online (Sandbox Code Playgroud)
这当然有效。但我希望只是抑制 6031 错误CString::LoadString。
您的代码忽略函数的返回值,该函数返回BOOL. 警告是正确的。您可以关闭该警告,但这样做(正如您所发现的)会完全关闭编译单元的警告。
您可以使用#pragma warning(suppress)关闭单次调用警告的警告。
但我认为明智的做法是编写一个加载字符串的包装函数。该包装器检查函数的返回值,并在函数因未找到字符串而返回 FALSE 时做出适当的反应。你认为合适的完全取决于你:也许你记录了一个错误,也许你弹出一个消息框,也许你使用默认字符串。
| 归档时间: |
|
| 查看次数: |
3829 次 |
| 最近记录: |