0

Splint から次の警告が表示されます。

encrypt.c:4:8: Function exported but not used outside encrypt: flip
  A declaration is exported, but not used outside this module. Declaration can
  use static qualifier. (Use -exportlocal to inhibit warning)
   encrypt.c:10:1: Definition of flip

このファイルでのみ splint を呼び出したので、どうやってそれを知っているのでしょうか?

#include        <stdio.h>
#include        <stdlib.h>

int    flip( int a)
{
        int b;
        b = a;
        b ^= 0x000C;
        return b;
}

int     blah(int argc, char    *argv[]) {

        FILE    *fp = NULL, *fpOut=NULL;
        int             ch;
        ch = 20; flip(20); return (ERROR_SUCCESS);
}

main を削除して、ファイルが完全であることを認識できないようにしました。私は完全に困惑しています!

4

4 に答える 4

2

flip()もちろん、宣言したヘッダーを含めた場合、splint文句を言わないことに気付くかもしれません。blah()ヘッダーでも宣言する必要があります。

blah()まったく使用されていないので(使用しているのに) 、これが説明であると完全に確信しているわけではなく、あなたはそれについて不平を言うflip()ことはありません。splint

staticただし、ソースファイルの外部で必要であることを示すことができるまで、すべての関数を(Cで)作成し、関数を宣言するヘッダーがあり、そのヘッダーがファイルで使用されていることを確認することをお勧めします。関数を定義し、関数を使用するすべてのファイルで。

C ++では、「すべての関数はstatic「アドバイス」になります。「すべての関数は匿名の名前空間で定義する必要があります」。

于 2009-04-12T17:47:34.153 に答える
0

見たものだけを報告することができます。警告を無視するか、警告の内容をよく知っている場合は、指示に従って警告を禁止してください。このようなツールが必ずしもあなたよりもあなたのプログラムをよく知っていると思い込まないでください。

ファイルの外部で使用することが実際に意図されていない場合は、静的であると宣言することができ、問題は修正されますが、他のファイルからはアクセスできなくなります。

于 2009-04-12T07:35:59.550 に答える