2013-12-11 6 views
1

executor.cpp 파일에 std :: string을 사용하는 코드가 있습니다. 해당 헤더 파일에서 executor.h는 #include <string>을 포함합니다. 내가 잘못Cpplint가 헤더 파일을 묻습니다.

dec-session/executor.cpp:15: Add #include <string> for string [build/include_what_you_use] [4]

를하고있는 중이 야 무엇을 - 그러나, executor.cpp에 cpplint을 실행하는 나에게 말하는 메시지를 제공? executor.h에 포함시켜야합니까?

답변

0

아래의 설명을 위해 편집 됨. 당신이 무시할 수있는 거짓 긍정입니다.

일반적으로 executor.cpp에 포함되어야하며 executor.h에 선언 클래스 (class Thing;) 만 전달해야합니다.

그러나 Thing 클래스의 다른 버전을 생성하려는 경우 executor.h를 포함하는 모든 항목은 현재 재 컴파일해야합니다. include를 cpp로 이동하면 executor.cpp를 다시 컴파일하고 다시 링크하면됩니다.

+1

std :: string을 전달하는 것이 좋습니다. –

+0

공정한 시점입니다. 나는 그것이 거짓 긍정이기 때문에 일반에서 말하는 것으로 편집 할 것입니다. – splrs

3

std :: string을 헤더 어딘가에 사용하는 경우 (예 : 매개 변수의 하나 인 std :: string을 사용하여 함수 선언을하는 경우) 경고를 무시하십시오. 가능하면 해당 특정 경우에 대해 필터링하십시오.

그러나 선언 전달을 제안하는 다른 경고는 무시하지 마십시오. 다른 헤더에 헤더를 포함시키지 않으면 헤더의 내용을 변경할 때 다시 작성해야하는 파일 수가 줄어들 기 때문에 좋습니다.

관련 문제