2016-06-29 1 views
5

라이브러리 헤더의 함수에 대해 Xcode의 사용되지 않는 함수 경고를 표시하지 않으려면 올바른 방법은 무엇입니까?라이브러리 헤더의 인라인 함수에 대한 Xcode의 사용되지 않는 함수를 경고하는 올바른 방법

는 예를 들어, 나는 MathUtils.h에 다음 함수를 정의했습니다 :이 헤더를 포함하지만 경고를 트리거이 특정 기능을 사용하지 않는

namespace MathUtils { 
    static std::complex<double> cis(double x) { 
     return std::complex<double>(cos(x), sin(x)); 
    } 
    ... 
} 

소스 파일을.

경고 플래그를 추가하여 경고를 사용하지 않도록 설정할 수는 있지만 올바른 방법은 아닙니다. 일반적인 문제인 것처럼 보입니다.

+0

경고가 트리거 될 때 컴파일러 옵션은 무엇입니까? xcode와 clang의 버전은 무엇입니까? – osgx

+0

둘 다 Xcode 7/8입니다. 관련된 경고는 Unused Functions입니다. – Danra

+0

Danra, 전체 명령 줄 옵션이있는 전체 컴파일러 명령? (빌드 전체 로그 확인 - "Expand All Transcripts"- http://stackoverflow.com/questions/19014359/how-do-i-view-the-full-build-log-on-xcode5 - clang 명령이 있어야합니다.) – osgx

답변

5

static 대신 static inline으로 기능을 변경하면 문제가 해결됩니다.

+0

정적 메서드를 정적 인라인으로 변경했습니다. 그러나 Xcode 9.1에서는 여전히 "사용되지 않는 함수"경고가 표시됩니다. –

3

-I이 아닌 -isystem으로 파일의 위치를 ​​지정하면 clang이 헤더 파일의 모든 경고를 자동으로 무시합니다. 자세한 내용은 http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-in-system-headers을 참조하십시오.

XCode에서 이렇게하려면 빌드 설정의 '기타 C++ 플래그'섹션에 적절한 컴파일러 플래그를 추가해야합니다.

static으로 함수를 정의했기 때문에 경고 메시지가 나타납니다. 즉,이 함수는 머리글을 포함하는 다른 번역 단위에서 별도로 정의되며 다른 단위에는 표시되지 않습니다. static 키워드를 제거하면 오류를 제거 할 수 있습니다.

+0

정적을 제거하면 머리글이 둘 이상의 모듈에 포함될 경우 링커 오류가 만들어집니다. – Danra