2016-08-12 4 views
1

Есть некоторые учебники, что там #include следующих заголовкимодулей ядра Linux - избыточный включает

#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 может помочь людям отслеживать неиспользованные #includes.

Смежные вопросы