Xcode警告:...是GNU扩展

did*_*_X8 4 gnu llvm clang ios

我为一个iOS应用程序使用C++库.配置Apple LLVM 3.1编译器(默认)后,我收到很多关于这个C++代码的警告,大多数人都说:

... is a GNU extension
Run Code Online (Sandbox Code Playgroud)

clang用户手册的介绍说: Clang驱动程序和语言功能被有意设计为尽可能与GNU GCC编译器兼容,从而简化了从GCC到Clang的迁移.在大多数情况下,代码"只是工作".

那么,只是寻找一个开关来禁用这个警告(顺便说一下,怎么样?)或者我应该更好地让这个lib摆脱所有GNU扩展?

rob*_*off 8

您可以使用编译器标志来禁止警告.Clang告诉你每个警告使用哪个编译器标志.构建后,选择"视图">"导航器">"显示日志导航器".然后从日志导航器中选择最新的构建日志.找到带有警告的文件,然后单击其状态行右端的"泄露"按钮.Xcode将显示该文件的编译器命令行和输出.每个警告都应包含启用警告的编译器标志.例:

在此输入图像描述

在我的例子中,警告标志是-Wpointer-arith.因此,警告,可以禁止通过-Wno-pointer-arith.所以我可以将该标志添加到"其他警告标志"构建设置:

在此输入图像描述

  • 当使用MAXU的GNU时,还添加-Wno-gnu隐藏警告. (2认同)