如何在 MFC 项目中正确使用大括号或 gsl::narrow_cast?

Posted

技术标签:

【中文标题】如何在 MFC 项目中正确使用大括号或 gsl::narrow_cast?【英文标题】:How to correctly use braces or gsl::narrow_cast in MFC project? 【发布时间】:2021-09-11 08:11:34 【问题描述】:

我在研究中看到这里讨论过这个问题,但我仍然遇到问题并且不确定。

我的代码:

m_gridAssignHist.SetRowCount(static_cast<int>(mapHistory.size()) + 1);

代码 analysys 说要么使用大括号,要么使用gsl::narrow_cast

m_gridAssignHist.SetRowCount(gsl::narrow_cast<int>(mapHistory.size()) + 1);
我不确定在这种情况下如何正确使用大括号,希望得到澄清。 我的 IDE 将 gsl:: 标记为未知。

【问题讨论】:

【参考方案1】:

代码分析的建议点是检查缩小转换

intvalue 是缩小转换,如果value 是常量,则可以在编译时 中检查。 intmapHistory.size() 不应该编译。

gsl 检查是 runtime,因此它实际上会检查您的情况下的值范围。要使其编译,obtain gsl library,并使其可供编译器使用。

【讨论】:

以上是关于如何在 MFC 项目中正确使用大括号或 gsl::narrow_cast?的主要内容,如果未能解决你的问题,请参考以下文章