2016-08-12 3 views
1

일부 자습서가 거기 #include 다음 헤더 그러나 리눅스 커널 모듈 - 중복 포함

#include <linux/kernel.h> 
#include <linux/init.h> 

이 모듈은 그들없이 잘 작동하는지있다; 단순한 linux/module.h이 포함됩니다. 둘이 필요합니까?

+2

종종 헤더 파일 사이에 의존성이 있기 때문에 'module.h'는 다른 헤더 파일을 포함합니다. 그러나 당신은 그것에 의존해서는 안되며 필요한 모든 헤더를 포함해야합니다. – Barmar

+0

컴파일하지 않으면 컴파일 할 필요가 없습니다. – stark

답변

1

stark으로 말하면, 일부 특정 경우에는 불필요한 것으로 보입니다. 만약 당신이 그것을 약간의 튜토리얼에서 발견했다면 아마도 작가가 머리를 복사하여 붙여 넣기 만하면되기 때문일 것입니다.

module.h에서 상대 :

#include <linux/init.h> 
#include <linux/kobject.h> 

kobject.h을 :

그러나
#include <linux/kernel.h> 

, 사용되지 않는 사용법 #include 제거해야 그들이 증가 등의 부정적인 영향을 미칠 수 있기 때문에 컴파일 시간 및 메모리 사용량.

Include what you use이라는 도구는 사람들이 사용하지 않은 #include를 추적하는 데 도움을 줄 수 있습니다.