【发布时间】:2017-03-15 12:30:30
【问题描述】:
我自建 gcc 7 来尝试一些新的 c++17 功能。
当我构建代码时,我看到了一百行警告,说某些功能只有在 -std=c++1z 时才可用(我已经在构建命令行中指定了 -std=c++1z 并且我尝试过gnu++1z 也是)
我想消除这个警告。使用 clang 4 时,有一个选项 -Wno-c++1z-extensions
但 gcc 无法识别此选项。
【问题讨论】:
-
你不能用
-std=c++1z编译吗? -
请注意,如果您的代码使用 c++17 功能,则需要使用 c++17 编译器。显然你通过指定
-std=c++1z来做到这一点。仅仅试图消除“警告”并不是要走的路 - 将一种语言的编译器扔给另一种语言并告诉编译器对其不理解的所有内容闭嘴是个坏主意。 -
@VittorioRomeo 我已经指定 -std=c++1z,警告不会消失
-
@skyking 你是什么意思?我使用了 gcc7,一个 c++17 编译器,并且在构建命令行中我已经指定了 -std=c++1z?警告没有消失?
-
是手动编译还是使用 makefile/cmake/...?因为这种事情通常结果是编译选项实际上没有到达编译器(CFLAGS 与 CXXFLAGS 等),或者调用的编译器不是预期的(坏的工具链文件,CC 与 CXX,配置不会重新运行,无论如何)。您是否尝试通过具有 C++17 功能的单个 cpp 文件手动调用此编译器并查看它是否仍然给出这些警告?