2

カスタム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 *);

何が悪いのでしょうか?

4

1 に答える 1

2

EXPORT_SYMBOLマクロが定義されているヘッダーを含めていないようです。そのため、コンパイラは暗黙の宣言について不平を言っています。それは、を返す関数であると考えていintます。

于 2012-08-03T02:45:28.300 に答える