检查是否使用了 C++11 功能
check if c++11 features are used or not
所以,现在我的任务是检查整个代码中是否没有任何 c++11 依赖项和功能。问题是 - 是否可以检查是否有?
我现在能想象的可以分为两组:
-
-std=c++11 -Wc++98-compat
+ 解析输出; -
Boost.Config + 围绕所有代码的大量宏,这似乎比第一个更复杂;
可能某些静态分析器中可能有内置功能?
我正在多个平台上构建它,所以我可以在Windows或Linux上进行检查。
重新发布我的评论。
现代编译器默认-std=c++11
。旧的需要明确说我们想要 c++11 通过 -std=c++11
.您可以显式选择所需的任何标准。因此,使用-std=c++03
会让您在所有 C++11 构造上出错。
但这还不是故事的全部。某些代码在 C++03 和 C++11 中可以以不同的方式运行,但仍然可以编译!例如,静态初始化仅在 C++11 中是线程安全的,因此在 C++03 中,您将获得将编译但被错误的代码。确保您需要与完全了解 C++03、C++11 及其差异的人一起审查整个代码。
也许您可以使用静态代码分析工具支持这项工作,但要 100% 确定您需要审查它......
相关文章:
- 如何使用lock_guard在c++11中实现scoped_lock功能
- 如何获得CMake Tools以在Visual Studio Code中编译具有C++11(或更高版本)功能的程序?
- C++11 功能 std::map::at 编译旧版本的C++
- C++03 和 C++11 之间的c_str功能规范的差异
- =删除用户定义的成员功能,除了构造函数,分配运算符C 11
- 如何实现声明功能-C 11,编译时间
- C 11:功能表指针,lambdas
- C 11功能参数
- 我如何知道我的编译器是否支持XXXXC++11功能
- 检查是否使用了 C++11 功能
- 警告:禁用犰狳中的 C++11 功能
- 如果我使用c++11功能编译一个文件,同时将其链接到一个没有c++11编译器选项编译的库,会有什么问题吗
- 编译器选项不适用于无序集C++11功能
- 正在禁用VS2012上的C++11功能
- 如何在不使用C++11功能的情况下初始化类中的数组
- 分割故障:11 - C功能
- 禁用 Visual Studio2013 中的 c++11 功能
- 如何检测我的源代码中使用了哪些 C++11 功能
- 有没有一个网页,微软保存了在最新的VC++中实现的C++11功能的最新列表
- 是 std::max_element 是 C++11 x 功能