-Wno-unused-variable:不显示未使用的变量告警
-Wno-unused-parameter:不显示未使用的参数告警
-Wno-unused-function:不显示未使用的函数告警
-Wno-unused-but-set-variable:不显示已赋值但未使用的变量告警
-Wno-unused-private-field:不显示未使用的类私有成员告警
-Wno-unused-label:不显示未使用的跳转标记告警
-Wno-unused-but-set-variable
,建议酌情使用,变量已赋值未使用,可能是潜在bug。
建议如下设置:
-Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-unused-function -Wno-unused-private-field -Wno-unused-label
gcc Wno-unused-variable Wno-unused-parameter Wno-unused-function Wno-unused-but-set-variable
(https://blog.csdn.net/qq_17308321/article/details/79979514)
-fsyntax-only
检查代码中的语法错误,但除此之外不要做任何事情。
禁止所有警告消息。
-Werror
使所有的警告进入错误。
-Werror=
微信搜索:编程笔记本。
昨天在 review 同事的一个 MR 时,发现了一个比较有趣的问题,记录如下。
同时的 MR 修复的大概是这样一个问题:函数内部定义的某些局部变量仅用于 Log 语句,当 Log 关闭时,这些局部变量在整个函数作用域内就都未被使用过,所以在编译的时候就会报**变量未使用**的警告信息。
程序中的 Log 语句主要是帮助开发人员调试程序的,主要是打印一些程序运.
目前 Linux 下最常用的 C 语言编译器是 GCC ( GNU Compiler Collection ),它是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C 、 C++ 和 Object C 等语言编写的程序。 GCC 不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java 、 Fortran 、 Pascal 、 Modula-3 和 Ada 等。开放、自由和灵活是 Linux 的魅力所在,而这一点在 GCC 上的体现就是程序员通过它能够更好地控制整个编译过程。在使用 GCC 编译程序时,编译过程可以被细分为四个阶段
GCC编译器
GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC 后扩展,变得可处理 C++,后又支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection).
GCC编译选项
-E:仅作预处理,头文件、宏的处理
-S:仅编译到汇编语言,不汇编和链接
-c:编译、汇编到目标代码(计算机可识别的二进制),不链接标准库(或第三方库)
-o:执行gcc后目标文件命名
-g:生成调试信息(方便gdb调试)
running build_ext
skipping ‘bbox.c’ Cython extension (up-to-date)
skipping ‘nms.c’ Cython extension (up-to-date)
building ‘cython_bbox’ extension
{‘gcc’: [’-Wno-cpp’, ‘-Wno-unused-function’]}
CFLAGS = -g3 -Wall -Wextra -Werror -Wno-unused-function -Wno-unused-parameter -D_GNU_SOURCE
CXXFLAGS = -g3 -std=c++11 -Wall -Wextra -Werror -Wno-unused-function -Wno-unused-parameter
编译报error错误时,在.mk 文件中添加相应的flag,可以屏蔽掉error。
error: unused parameter 'groupId' [-Werror,-Wunused-parameter]
可以添加以下配置:
LOCAL_CFLAGS += -Wno-unused-parameter
error: ignoring return value of function...
在makefile
中将-Werror=unused-but-set-variable去除,如果在makefile
中找不到,那么就应该在目录下的makefile.in
中可以找到
-Weeor去掉即可