Wie weiß Schiene meiner Funktion nicht in einer anderen Datei verwendet wird?

StackOverflow https://stackoverflow.com/questions/741400

  •  09-09-2019
  •  | 
  •  

Frage

Splint gibt mir die folgende Warnung:

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

Da ich genannt Schiene nur auf diese Datei, wie es das weiß?

#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);
}

Ich habe sogar von Haupt befreien, damit sie nicht herausfinden können, dass die Datei in irgendeiner Weise abgeschlossen ist. Ich bin total ratlos!

War es hilfreich?

Lösung

Sie können feststellen, dass, wenn Sie einen Header enthalten, die flip() erklärt - wie Sie sollten natürlich - dann würde splint nicht beklagen. Sie sollten auch als auch blah() im Header deklarieren.

Ich bin nicht ganz davon überzeugt, dass dies die Erklärung ist, weil blah() haupt nicht verwendet wird (obwohl es flip() verwendet) und Sie nicht erwähnen splint darüber beschweren.

Es ist jedoch eine gute Praxis, jede Funktion (in C) static bis Sie nachweisen können, machen, dass sie außerhalb ihrer Quelldatei benötigt wird, und dann stellen Sie sicher, dass es einen Header, der die Funktion erklärt, und dass Header in der Datei verwendet, die die Funktion und in jeder Datei definiert, die die Funktion verwendet wird.

In C ++, die ‚sollte jede Funktion static wird‘ Beratung wird ‚jede Funktion sollte in dem anonymen Namespace definiert werden.‘

Andere Tipps

  

Da ich genannt Schiene nur auf diese Datei, wie es das weiß?

Sie haben Ihre Frage beantwortet. Sie haben in einer Datei zu Flusen zugeführt, so Fussel weiß nur gesorgt werden soll Datei (abgesehen von den Standard-Header enthalten, natürlich).

int Flip () nicht als statisch deklariert, so dass es möglicherweise extern genutzt werden. Da Sie mit nur einer Quelldatei Schiene aufgerufen, heißt es richtig, dass Ihre Funktion, wenn nicht extern verwendet, muss statisch deklariert werden

Es kann nur berichten, was sie sieht. Ignorieren Sie die Warnung oder folgen Sie den Anweisungen, um es zu verhindern, wenn Sie wissen besser als das, was es sagt. Gehen Sie nicht davon, dass ein Werkzeug wie dies unbedingt weiß, Ihr Programm besser als Sie.

Wenn es wirklich nicht außerhalb der Datei verwendet werden soll, können Sie erklären, es statisch und es soll das Problem beheben, aber es wird von anderen Dateien nicht zugegriffen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top