检查是否使用了c ++ 11功能

时间:2015-04-23 07:43:21

标签: c++ c++11 static-analysis

所以,现在我的任务是检查整个代码中是否没有任何c ++ 11依赖项和功能。问题是 - 是否有可能检查是否有?

我现在可以想象的可以分为两组:

  • -std=c++11 -Wc++98-compat +解析输出;

  • Boost.Config +围绕所有代码的很多宏,看起来比第一个更复杂;

某些静态分析仪可能有内置功能吗?

我在多个平台上构建它,所以我可以在windows或linux上查看。

1 个答案:

答案 0 :(得分:7)

重新发表评论。

现代编译器默认为-std=c++11。旧的需要明确说我们想要-std=c++11的c ++ 11。您可以明确选择您想要的任何标准。所以使用-std=c++03会在所有C ++ 11构造中给出错误。

但这不是一个完整的故事。有些代码可以在C ++ 03和C ++ 11中以不同的方式运行,但仍然可以编译!例如,静态初始化仅在C ++ 11中是线程安全的,因此在C ++ 03中,您将获得将编译但被窃听的代码。确保你需要与完全了解C ++ 03,C ++ 11及其差异的人一起审查整个代码。

可能您可以使用静态代码分析工具支持这项工作,但要100%确定您需要查看它...