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

fab*_*zi0 5 c sqlite gcc

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

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

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

我尝试过:

#pragma GCC diagnostic ignored "-Werror"
Run Code Online (Sandbox Code Playgroud)

没有成功我也试图逐个列出导​​致问题的警告:

#pragma GCC diagnostic ignored "-Wextra"
#pragma GCC diagnostic ignored "-Wfloat-equal"
#pragma GCC diagnostic ignored "-Wundef"
...
Run Code Online (Sandbox Code Playgroud)

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

有什么想法/建议?

fuz*_*fuz 1

您可以在 Makefile 中添加一条额外的规则,以便在没有或根本没有任何警告的情况下sqlite3.c编译文件。-Werror按照通常的约定,这样的事情可能就足够了:

sqlite3.o: sqlite3.c
    $(CC) $(CFLAGS) -w -c sqlite3.c
Run Code Online (Sandbox Code Playgroud)