如何使用Android NDK为缺少的return语句启用编译错误

时间:2012-12-11 20:24:34

标签: gcc android-ndk compiler-errors

使用Android NDK,我有一个返回作业的本机方法 - 除了我忘记了return语句。不幸的是,这个编译没有警告,当我试图运行它时,只给了我一个0xdeadd00d的段错误。

虽然我最近主要在Java工作,所以我脑子里的错误信息是“缺少return语句”,我相信gcc错误信息是“控制到达非void函数的结尾”。

我想打开警告,并将其变成错误。我怎么做? (由于我正在编译的现有代码库,简单地使用-Wall -Werror不是一个选项。)

1 个答案:

答案 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中所示。