如何使用带有gcc的#pragma选择性地禁用-Werror

时间:2015-10-29 12:59:34

标签: c gcc sqlite

在我寻求免费警告应用程序时,我已经开始使用-Werror告诉gcc将所有警告视为错误。

这确实非常有用,因为有时我在大型构建输出中错过了一两个(严重)警告。 不幸的是,我的项目使用的sqlite3包含许多警告,如sqlite网站所述,无法消除(他们不想删除)。

我想知道是否有一种方法可以使用一些#pragma我可以放在sqlite3.c文件中告诉gcc停止将警告视为仅对该文件的错误。

我尝试过:

#pragma GCC diagnostic ignored "-Werror"

没有成功 我还试图逐一列出导致问题的警告:

#pragma GCC diagnostic ignored "-Wextra"
#pragma GCC diagnostic ignored "-Wfloat-equal"
#pragma GCC diagnostic ignored "-Wundef"
...

...遗憾的是,有一些警告无法完全关闭(即初始化会丢弃指针目标类型的限定符)。

有任何想法/建议吗?

1 个答案:

答案 0 :(得分:2)

您可以为sqlite3.c的Makefile添加额外规则,该编译文件在没有-Werror的情况下编译文件,或者根本没有任何警告。按照惯例,这样的事情就足够了:

sqlite3.o: sqlite3.c
    $(CC) $(CFLAGS) -w -c sqlite3.c