【问题标题】:Unknown warning group '-Wmaybe-unintialized' Mac OS Sierra未知警告组“-Wmaybe-uninitialized”Mac OS Sierra
【发布时间】:2016-11-23 09:57:24
【问题描述】:

尝试在 Mac OS Sierra 中编译我的软件时,我遇到了关于未知编译指示的问题(请参阅下面的 sn-p)。据一位同事介绍,该软件能够在 Mac OS X Yosemite 中以相同的 clang 版本(4.2.1)进行编译。使用的编译标志是:-std=c++11 -stdlib=libc++。不能使用stdlibc++,因为它不包括std::shared_ptr

error: unknown warning group '-Wmaybe-uninitialized', ignored
  [-Werror,-Wunknown-pragmas]
                    #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"

这是g++ --version的打印输出

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.1.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

不确定从哪里获取它,非常感谢任何输入。

【问题讨论】:

  • 在 macOS 上,标准编译器是 Clang,它大部分与 GCC 兼容。命令g++ 只是clang++ 的别名。如果您需要 GCC 特定的行为(例如您显示的编译指示),那么我建议对这些部分进行条件编译。
  • 感谢您的回复@Someprogrammerdude。好的,该软件是使用cmake 编译的,我和我的同事都使用相同的cmake 配置,而他的作品和我的作品没有。在可能会干扰'-Wmaybe-uninitialized' 并使其在编译时失败的clang 版本和库方面,优胜美地和Sierra 之间是否存在显着差异?

标签: c++ clang pragma macos-sierra libc++


【解决方案1】:

而不是写

#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"

你应该这样做

#if !defined(__has_warning) || __has_warning("-Wmaybe-uninitialized")
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#endif

【讨论】:

  • 这样做会在预处理器中出现错误error: missing binary operator before token "("
  • 在 GCC 8.3.0 上出现“-Wpsabi”错误时工作正常。
猜你喜欢
  • 1970-01-01
  • 2017-05-31
  • 2012-12-17
  • 1970-01-01
  • 2016-03-03
  • 2017-04-16
  • 2018-06-21
  • 2017-04-03
相关资源
最近更新 更多