하나의 리눅스 설치에서 다른 것으로 또는 유닉스에서 다른 유닉스로 이동할 때 종종 특정 코드를 포함하고 싶지 않은 것 같습니다.C++에서 헤더 포함에 대한 정적 분석
다른 사람에게 원본을 제공하면 파일을 컴파일 할 수있을 것으로 기대하고, 헤더 파일 누락으로 인해 실패 할 수 있습니다.
현재 암시 적으로 포함 된 것으로 보이는 부분에 명시 적으로 포함해야하는 헤더를 검색 할 수있는 정적 분석 도구가 있습니까? 헤더 파일의 암시 적 포함을 비활성화하는 방법이 있습니까?
또한 포함 된 헤더 파일을 감지하고 코드 변경을 통해 중복 될 수 있으므로 더 이상 필요하지 않습니다.
나는 그런 도구가 없다는 것을 알고 있지만 [autoconf] (http://www.gnu.org/software/autoconf/)와 같은 것을 사용하면 응용 프로그램에서 사용할 수있는 헤더 파일을 쉽게 찾을 수 있습니다 위에 건설되고 있습니다. 그런 다음 한 시스템에서 누락 된 헤더 파일에 대한 "버그"를 수신 할 수 있으며 구성 스크립트에서 해당 헤더 파일에 대한 검사를 추가하고 소스에 조건부 포함을 추가하면 특정 헤더가 필요한 모든 플랫폼에서 작동합니다 파일. –
또한 POSIX 함수의 경우 [공식 참조] (http://pubs.opengroup.org/onlinepubs/007904975/)에서 특정 기능에 필요한 헤더 파일을 확인할 수 있습니다. –
"암시 적으로 포함 된"의미를 명확하게 설명해주십시오. #ifdef에있는 #include를 어떻게 처리 할 계획입니까? 가능한 모든 조건부 컴파일 키 조합에 대해 전체 포함 파일 목록을 원하십니까? 비슷한 분석의 예로 프로젝트에서 사용되는 모든 조건부 컴파일 키 목록을 작성하는 방법을 살펴볼 수 있습니다. http : //cdsan/Samp_CondParams.php –