我可以抑制特定的 C6031 警告吗? CString::LoadString

Can I suppress a specific C6031 warning? CString::LoadString

我已阅读这篇文章link,因此对警告所指的内容有了基本的了解。

当我 运行 对我的 MFC 项目进行代码分析时,我收到了这些警告的弹幕:

d:\my programs17\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 programs17\meetschedassist\meeting schedule assistant\synchexclusionsdlg.cpp(297): warning C6031: Return value ignored: 'ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW'.

所以,例如,它抱怨这个代码片段:

if (iImage == IMG_CHECKED)
    strText.LoadString(IDS_STR_YES);
else
    strText.LoadString(IDS_STR_NO);

我已经阅读了 LoadString 的帮助文档,具有讽刺意味的是,他们的示例是这样做的:

CAtlString s;
s.LoadString(IDS_APP_TITLE);   

他们也不测试 return 值。 :)

现在,我意识到我可以尝试修复我的代码并测试 return 值 - 这将花费我很长时间!而且我意识到我可以下意识地忽略这些警告。

但是是否可以在分析过程中抑制这个特定的警告(关于 C6031 CString::LoadString)?


更新

我已经尝试将此添加到我的 stdafx.h(基于评论):

#pragma warning( disable : 6031)

当然有效。但我希望只抑制 CString::LoadString.

的 6031 错误

您的代码忽略了函数中的 return 值,即 returns BOOL。警告是正确的。您可以关闭该警告,但这样做(如您所见)会完全关闭编译单元的警告。

您可以使用#pragma warning(suppress)关闭单次调用警告的警告。

但我认为明智的做法是编写一个加载字符串的包装函数。该包装器检查函数中的 return 值,并在函数 return 为 FALSE 时做出适当的反应,因为未找到该字符串。您认为合适的完全取决于您:也许您记录错误,也许您弹出消息框,也许您使用默认字符串。