所以,现在我的任务是检查整个代码中是否没有任何c ++ 11依赖项和功能。问题是 - 是否有可能检查是否有?
我现在可以想象的可以分为两组:
-std=c++11 -Wc++98-compat
+解析输出;
Boost.Config +围绕所有代码的很多宏,看起来比第一个更复杂;
某些静态分析仪可能有内置功能吗?
我在多个平台上构建它,所以我可以在windows或linux上查看。
答案 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%确定您需要查看它...