매개 변수로 전달되는 동안 "사용되지 않는"함수에 대한 부목 경고 해결

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

  •  03-07-2019
  •  | 
  •  

문제

내 프로그램에 부목 체커 경고 :

expat-test.c:23:1: Function exported but not used outside expat-test: start
  A declaration is exported, but not used outside this module. Declaration can
  use static qualifier. (Use -exportlocal to inhibit warning)
   expat-test.c:38:1: Definition of start

시작 () 함수 ~이다 사용된. 프로그램은 다음을 사용합니다 국외 거주자 콜백과 함께 작동하는 XML Parser. 파서에 기능을 제공합니다.

XML_SetElementHandler(parser, start, end);

그리고 파서는 어떤 시점에서 그것을 다시 불러냅니다. 이것은 C에서 매우 일반적인 관용구이며 왜 부목이 불평하는지 궁금합니다. 나는 아무것도 찾지 못한다 자주하는 질문 또는 수동.

도움이 되었습니까?

해결책

당신은 전화합니까? XML_SetElementHandler() 동일한 번역 장치 (일반적으로 .c 소스 파일)에서 start() 정의 되었습니까? 그렇다면 경고가 정확할 수 있습니다 : 추가 static 함수 정의로 응용 프로그램이 여전히 오류없이 연결되어 있는지 확인하십시오.

다른 팁

'static'키워드는 다른 번역 단위 (.C 파일, 일반적으로)의 함수 이름을 효과적으로 숨 깁니다. 코드는 여전히 존재하며 해당 C 파일에서 기능의 주소 (다른 C 파일이 아님)를 얻을 수 있습니다. 그런 다음 주소를 다른 번역 장치로 전달하거나 함수를 호출하거나 함수에서 주소를 반환하거나 전역 변수에 저장하여 주소를 전달할 수 있습니다.

정적으로 내보내지 않는 모든 기능을 선언하는 경향이 있습니다. 나는 가르쳐 주었고 현재 그렇게하는 것이 좋은 관행이라고 믿고 있습니다. (면책 조항 : 대부분의 것들과 마찬가지로이 '규칙'에는 많은 예외가 있습니다.)

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