首页 > 解决方案 > 如何在 MFC 项目中正确使用大括号或 gsl::narrow_cast?

问题描述

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

我的代码:

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

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

m_gridAssignHist.SetRowCount(gsl::narrow_cast<int>(mapHistory.size()) + 1);

标签: visual-c++mfccode-analysis

解决方案


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

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

gslcheck 是runtime,因此它实际上会检查您的情况的值范围。要使其编译,请获取 gsl 库,并将其提供给编译器。


推荐阅读