2

Android NDK を使用して、jobject を返すネイティブ メソッドを作成しましたが、return ステートメントを忘れていました。残念ながら、これは警告なしでコンパイルされ、実行しようとしたときに 0xdeadd00d で segfault が発生するだけでした。

私は最近主に Java で作業しているので、頭の中のエラー メッセージは「return ステートメントがありません」ですが、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 に答える