私はコードベースで未使用の関数を見つけたいと思っています。私はコンパイラとしてgccを使用しています。ここで未使用機能について警告する方法はありますか?
は例です:
foo.c
(適切なfoo.h
を想定):
void foo() {
....
}
void bar() {
....
}
main.c
:
#include <stdio.h>
#include "foo.h"
int main(void) {
bar();
return 0;
}
この例では、私は約foo()
がされていないと警告を取得したいのですが中古。
-Wunused-function
gccのオプションがあります:静的関数が宣言されていますが定義されていないか、非インライン静的関数が使用されていないされるたびに
-Wunused-function
は警告します。この警告は、-Wallによって有効にされた です。
ただし、静的関数の場合のみです。上記の例では警告は表示されません。
可能であれば、私はgcc
に固執したいと思いますが、ツール/スクリプト/他のコンパイラの提案も受け付けます。
デフォルトでは、未使用の非静的関数について警告しないのがよい理由があります。静的でない関数はpublicインターフェイスの一部です。gccが生成した.oファイルをリンカーに簡単に送り込んで.aまたは.soライブラリを生成することができます。これらの非静的関数はすべてリンクライブラリと一緒に。しかし、これはまだ大きな疑問であり、私は有益な答えを期待しています。 –
絶対に、デフォルトではオンであってはいけません。機能が存在する場合、最終的なリンク時にそれを有効にすることができます:) –
関連http://gcc.gnu。org/ml/gcc-help/2003-08/msg00072.html? –