使用 LLVM/Clang 忽略特定文件中的所有警告

在我的 iOS 项目中有一些文件有一些警告,我想忽略这些警告。我不想在整个项目中禁用警告(知道如何做到这一点) ,只是一些特定的文件。那么,有没有一种方法可以完全忽略特定文件中的所有警告呢?

我在 Xcode 4.2上使用 LLVM 3.0和 Clang。

28664 次浏览

if you're just using clang, then you should use the pragma syntax for sources you maintain (assuming it is impossible to remove the warning by altering the program appropriately).

here is the syntax:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmultichar"


char b = 'df'; // no warning.


#pragma clang diagnostic pop

if these are programs you cannot change and don't maintain, you should specify the warning(s) to disable for the file, rather than all. to disable all, you can add the per file argument -w. sources change, and some warnings do (or do not) apply with different build settings. clang's messages can tell you what flag equates to the generated warning.

To use Xcode to alter a file's build flags:

  • select the target
  • select the build phase
  • locate the file to modify the arguments in the "Compile Sources" phase
  • double click its "Compiler Flags" cell to edit

I inherited a project that contained a lot of 320 code, and that code base threw several warnings and static analyzer errors at me that I had no interest in fixing since I will be removing that code from the project in the near future.

You can disable static analyzer warnings for a specific file by including the following compiler flag:

-Xanalyzer -analyzer-disable-all-checks

You can combine this with -w to disable warnings for that file as well. That has allowed me to push forward with new development while not having to be pestered with the 30 or so warnings generated by that code base.

Using the instructions from above: To use Xcode to alter a file's build flags:

  1. select the target
  2. select the build phase
  3. locate the file to modify the arguments in the "Compile Sources" phase
  4. double click its "Compiler Flags" cell to edit
  5. add "-w -Xanalyzer -analyzer-disable-all-checks" to suppress warnings and clang warnings

You can select specific target -> Build settings, search for Inhibit All Warnings and set to YES. This will disable warnings on this target. This can be useful if you use some code like JSONKit with cocoapods, and you don't want to see how compiler cries about warnings :)

With the help of justin's answer, this is how you do

1. Locate the name of the warning.

In my case its conversion

enter image description here

2. Add a per file compiler flag build phases

Use the filter to find the name of the file in compile sources, type -Wno-[error name] e.g. -Wno-conversion

enter image description here