【问题标题】:GCC: emit warnings when c++11 is usedGCC:使用 c++11 时发出警告
【发布时间】:2018-09-20 13:59:41
【问题描述】:

给定

跨平台 C++ 项目,必须在一些古老的 Windows 移动平台上构建。然而,开发是使用 GCC 完成的。

问题

每次使用 C++11 功能时,它都会在本地构建,但在构建服务器(移动窗口)上失败。

问题

如果我们的代码库中使用了 C++11 功能(不包括其他源依赖项),是否可以将 GCC 配置为以某种方式发出警告。

你有什么尝试?

我知道使用-std=c++98 -pedantic,但是:

  1. 我想在 Linux 平台上使用最新的编译器标准
  2. 有一些仅限 linux 的第三方依赖项(从源代码构建)需要 C++11

【问题讨论】:

  • 也许用-std=c++98 构建服务器部分,用-std=c++11 分别构建依赖关系?
  • 您在寻找-Wc++11-compat吗?
  • @StoryTeller 你能提供任何文档链接吗?
  • @StoryTeller 不,恐怕它不能满足我的要求。例如,如果使用auto,它不会发出警告。仅在与-std=c++98 一起使用时才有效

标签: c++ c++11 gcc c++98


【解决方案1】:

使用 C++98 标志构建您需要与 C++98 兼容的代码。

使用 C++11 标志构建您需要与 C++11 兼容的代码。

检查用于确保使用 C++98 和 C++11 构建的代码之间的 ABI 兼容性的编译器和标准库的文档;假设您在 C++98 和 C++11 代码库之间传递 std::strings,您可能必须(例如)在您的 C++11 代码中使用 C++98 字符串以获得 ABI 兼容性。

在构建同一个文件时,你不能同时使用 C++11 和不使用 C++11,除非你构建了两次。这也是一种选择;构建 C++98 兼容的东西两次,一次使用 C++latest,一次使用 C++98。在出现错误和警告后停止 C++98 构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2018-09-04
    • 2013-01-11
    • 2012-05-13
    相关资源
    最近更新 更多