如何在源文件中禁用clang未使用的命令行参数错误

时间:2018-10-16 07:42:30

标签: clang

当我在xcode中编译.c文件时,显示错误:

clang error: argument unused during compilation: '-fno-objc-exceptions' [-Werror,-Wunused-command-line-argument]

我可以将额外的命令“ -Wno-unused-command-line-argument”附加到clang命令行以禁用此警告。但我想知道是否可以在.c文件中将其禁用,因此我添加了#pragma这样的代码:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-command-line-argument"
...
#pragma clang diagnostic pop

但是失败了。

那么,如何在源文件中完全禁用此警告?

1 个答案:

答案 0 :(得分:0)

您无法通过在.c源代码中写的任何内容来抑制此诊断 文件,因为已经检测到诊断原因并发出了诊断 在读取.c源文件之前,您可以使用此源文件进行观察:

失败。c

#error Stop right here

和:

$ clang -c -fno-objc-exceptions fail.c
clang: warning: argument unused during compilation: '-fno-objc-exceptions' [-Wunused-command-line-argument]
fail.c:1:2: error: Stop right here
#error Stop right here
 ^
1 error generated.

诊断的原因是-fno-objc-exceptions仅是一个选项 适用于Objective C或Objective C ++的编译以及clang推断我们是 仅根据文件名fail.c具有扩展名的事实来编译C,而不是目标或目标C ++ .c,而不是.m.mm