Splint는 내 기능이 다른 파일에서 사용되지 않는다는 것을 어떻게 알 수 있습니까?

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

  •  09-09-2019
  •  | 
  •  

문제

부목은 다음과 같은 경고를 제공합니다.

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

이 파일에서만 스플린트를 불렀기 때문에 어떻게 알 수 있습니까?

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

파일이 어떤 식 으로든 완료되었음을 알 수 없도록 메인을 제거했습니다. 나는 완전히 혼란스러워!

도움이 되었습니까?

해결책

선언 한 헤더가 포함 된 경우 flip() - 물론 - 물론 splint 불평하지 않을 것입니다. 당신은 또한 선언해야합니다 blah() 헤더에서도.

나는 이것이 설명이라고 전적으로 확신하지 못한다. blah() 전혀 사용되지 않습니다 (사용하더라도 flip()) 그리고 당신은 언급하지 않습니다 splint 그것에 대해 불평합니다.

그러나 모든 기능을 만드는 것이 좋습니다 (C) static 소스 파일 외부에 필요하다는 것을 증명할 때까지 기능을 선언하는 헤더가 있는지 확인하고 해당 헤더가 기능을 정의하는 파일에 사용되는 모든 파일에 사용됩니다.

C ++에서는 '모든 기능은 static'조언은'모든 기능은 익명 네임 스페이스에 정의되어야합니다 '.

다른 팁

이 파일에서만 스플린트를 불렀기 때문에 어떻게 알 수 있습니까?

당신은 당신의 질문에 대답했습니다. 한 번의 파일을 보풀에 먹었습니다. 알고 있습니다 처리해야 할 파일 만 있습니다 (물론 표준 헤더 포함).

int flip ()는 정적으로 선언되지 않으므로 외부에서 잠재적으로 사용할 수 있습니다. 하나의 소스 파일만으로 스플린트를 호출 했으므로 외부에서 사용하지 않으면 정적으로 선언해야한다고 올바르게 말합니다.

그것은 그것이 보는 것에 대해서만보고 할 수 있습니다. 경고를 무시하거나 경고를 따르십시오. 지시 사항을 따르십시오. 이와 같은 도구가 반드시 귀하의 프로그램보다 더 잘 알고 있다고 가정하지 마십시오.

실제로 파일 외부에서 사용하려는 의도가 아닌 경우 정적으로 선언 할 수 있으며 문제를 해결해야하지만 다른 파일에서는 액세스 할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top