我有一个头文件,其中声明了几个全局变量,格式如下:
常量.h
#ifndef CONSTANTS_H
#define CONSTANTS_H
extern unsigned var;
EXPORT_SYMBOL(var);
#endif
常量.c
#include "constants.h"
unsigned var = 10;
foo.c
#include "constants.h"
当我尝试编译内核模块时,每个导出的符号都会出现以下错误:
WARNING: /home/vilhelm/proj/constants: 'var' exported twice. Previous export was in /home/vilhelm/proj/foo.ko
我怀疑每次包含constants.h头文件时都会导出符号,但我不明白为什么。constants.h中的包含保护不应该防止EXPORT_SYMBOL(var)
被多次读取吗?