代码之家  ›  专栏  ›  技术社区  ›  AMA

GCC:在使用C++ 11时发出警告

  •  0
  • AMA  · 技术社区  · 7 年前

    鉴于

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

    问题

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

    问题

    如果我们的代码库中使用C++ 11特性(除了其他源依赖项),是否有可能配置GCC以某种方式警告。

    你试过什么?

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

    1. 我想在Linux平台上使用最新的编译器标准
    2. 有一些只需要C++ 11的Linux第三方依赖项(从源构建)
    1 回复  |  直到 7 年前
        1
  •  0
  •   Yakk - Adam Nevraumont    7 年前

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

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

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

    在构建同一个文件时,不能同时使用C++ 11而不使用C++ 11,除非生成两个文件。这也是一个选项;构建C++ 98兼容的东西两次,一次用C++最新,一次用C++ 98。在错误和警告停止后扔掉C++ 98的构建。