使用Android NDK,我有一个返回作业的本机方法 - 除了我忘记了return语句。不幸的是,这个编译没有警告,当我试图运行它时,只给了我一个0xdeadd00d的段错误。
虽然我最近主要在Java工作,所以我脑子里的错误信息是“缺少return语句”,我相信gcc错误信息是“控制到达非void函数的结尾”。
我想打开警告,并将其变成错误。我怎么做? (由于我正在编译的现有代码库,简单地使用-Wall -Werror
不是一个选项。)
答案 0 :(得分:8)
经过一段时间的GCC手册页和几次重建之后,我发现要添加的命令行标志是-Werror=return-type
。将其附加到Android.mk中的LOCAL_CFLAGS。
另外,要找出调用给定错误类型的内容,可以打开-Wall并检查编译器输出;在警告之后,它显示相关的-W标志。
error: no return statement in function returning non-void [-Wreturn-type]
要单独启用该警告,请使用与其中括号中显示的完全相同的标记。要将其作为错误启用,请在-W之后立即插入“error =”,如-Werror=return-type
中所示。