编译自定义Linux内核时,我收到一些警告。我已将代码(用于调试)减少到:
int sw_totcp(struct ip_vs_service *svc)
{
return(1);
}
EXPORT_SYMBOL(sw_totcp);
int (*sw_totcpcall)(struct ip_vs_service *) = &sw_totcp;
EXPORT_SYMBOL(sw_totcpcall);
仍然收到这些警告(对于函数和函数指针):
warning: data definition has no type or storage class [enabled by default]
warning: type defaults to ‘int’ in declaration of ‘EXPORT_SYMBOL’ [-Wimplicit-int]
warning: parameter names (without types) in function declaration [enabled by default]
它们在头文件中正确声明,如:
extern int sw_totcp(struct ip_vs_service *);
extern int (*sw_totcpcall)(struct ip_vs_service *);
可能有什么问题?
答案 0 :(得分:2)
看起来您没有包含定义EXPORT_SYMBOL
宏的标头。这就是编译器抱怨隐式声明的原因:它认为它是一个返回int
的函数。