Ядро Linux — определение данных не имеет типа или класса хранения

#linux #kernel #export #definition #symbols

#linux #ядро #экспорт #определение #символы

Вопрос:

Я работаю над ядром Linux 3.4, и у меня есть следующий код:

     /* Proximity sensor calibration values */
unsigned int als_kadc;
EXPORT_SYMBOL(als_kadc);
static int __init parse_tag_als_calibration(const struct tag *tag)
{
    als_kadc = tag->u.als_kadc.kadc;

    return 0;
}

__tagtable(ATAG_ALS, parse_tag_als_calibration);
 

но когда я его создаю, это выдает следующую ошибку:

 warning: data definition has no type or storage class [enabled by default]
 

Да, это предупреждение, но это запрещенное предупреждение, и оно рассматривается как ошибка.
Предупреждение указывает на следующую строку в коде:

 EXPORT_SYMBOL(als_kadc);
 

Кто-нибудь может помочь мне решить эту проблему?

Спасибо.

Ответ №1:

ОК. Я понял проблему: мне не хватало include для module.h

Итак, я добавил это в свой файл кода:

 #include <linux/module.h>
 

Это устранило мою проблему, потому что EXPORT_SYMBOL был определен в этом заголовочном файле.