2

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

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

我想打开那个警告,然后把它变成一个错误。我怎么做?(简单地使用-Wall -Werror不是一种选择,因为我正在编译现有的代码库。)

4

1 回答 1

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.

于 2012-12-11T20:24:34.190 回答