检查是否使用了 c++11 特性
check if c++11 features are used or not
所以,现在我的任务是检查整个代码中是否没有任何 c++11 依赖项和功能。问题是 - 是否可以检查是否有?
我现在能想到的可以分为2组:
-std=c++11 -Wc++98-compat
+ 解析输出;
Boost.Config + 所有代码周围都有很多宏,这看起来比第一个更复杂;
可能在某些静态分析器中有内置功能?
我正在多个平台上构建它,所以我可以检查 windows 或 linux。
重新发布我的评论。
现代编译器默认为 -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% 确定您需要对其进行审查...
所以,现在我的任务是检查整个代码中是否没有任何 c++11 依赖项和功能。问题是 - 是否可以检查是否有?
我现在能想到的可以分为2组:
-std=c++11 -Wc++98-compat
+ 解析输出;Boost.Config + 所有代码周围都有很多宏,这看起来比第一个更复杂;
可能在某些静态分析器中有内置功能?
我正在多个平台上构建它,所以我可以检查 windows 或 linux。
重新发布我的评论。
现代编译器默认为 -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% 确定您需要对其进行审查...