Flexelint (Unix 버전의 PC-Lint)를 사용해 보았지만 결과가 약간 다릅니다. 이것은 매우 크고 코드가 많은 코드 기반으로 작업하고 있기 때문일 수 있습니다. 사용하지 않은 것으로보고 된 각 파일을주의 깊게 검사하는 것이 좋습니다.
가장 큰 걱정은 오 탐지입니다. 동일한 헤더의 여러 포함이 불필요한 헤더로보고됩니다. Flexelint가 헤더가 포함 된 행 또는 이전에 포함 된 행을 알려주지 않기 때문에 이것은 나쁩니다.
자동화 된 도구가이를 잘못 해결할 수있는 방법 중 하나 :
A.hpp에서 :
class A {
// ...
};
B.hpp에서 :
#include "A.hpp
class B {
public:
A foo;
};
C.cpp에서 :
#include "C.hpp"
#include "B.hpp" // <-- Unneeded, but lint reports it as needed
#include "A.hpp" // <-- Needed, but lint reports it as unneeded
Flexelint의 메시지를 맹목적으로 따르는 경우 #include 종속성이 막힙니다. 더 많은 병리학 적 사례가 있지만 기본적으로 최상의 결과를 얻으려면 헤더를 직접 검사해야합니다.
게임 내 블로그에서 실제 구조 및 C ++ 에 대한이 기사를 적극 권장합니다 . #include 혼란을 정리하기위한 포괄적 인 접근 방식을 권장합니다.
지침
다음은 파일 간의 물리적 종속성 수를 최소화하는 Lakos의 책에서 나온 일련의 지침입니다. 나는 수년 동안 그것들을 사용해 왔으며 항상 결과에 정말 만족했습니다.
- 모든 cpp 파일은 먼저 자체 헤더 파일을 포함합니다. [한조각]
- 헤더 파일에는 구문 분석에 필요한 모든 헤더 파일이 포함되어야합니다. [한조각]
- 헤더 파일에는 구문 분석에 필요한 최소한의 헤더 파일 수가 있어야합니다. [한조각]