【问题标题】:How to correctly use braces or gsl::narrow_cast in MFC project?如何在 MFC 项目中正确使用大括号或 gsl::narrow_cast?
【发布时间】: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:: 标记为未知。

【问题讨论】:

    标签: visual-c++ mfc code-analysis


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 2015-01-02
      • 1970-01-01
      相关资源
      最近更新 更多