2012-08-03 2 views
2

사용자 지정 Linux 커널을 컴파일 할 때 몇 가지 경고가 표시됩니다. 나는이에 (디버깅을 위해) 내 코드를 감소 :데이터 정의에 함수 정의에 유형 또는 저장소 클래스가 없습니다.

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] 

그들은 제대로 헤더 파일에 선언되어있다 :

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); 

을 그리고 아직도 (기능과 함수 포인터 모두)이 경고를 받고 like :

extern int sw_totcp(struct ip_vs_service *); 

extern int (*sw_totcpcall)(struct ip_vs_service *); 

무엇이 맞습니까?

+2

'EXPORT_SYMBOL'매크로가 정의 된 헤더를 포함하지 않는 것처럼 보입니다. – dasblinkenlight

+0

오, 무슨 실수 야, 네 말이 맞아. 질문에 답하기를 원하십니까? @dasblinkenlight – jeanc

답변

2

EXPORT_SYMBOL 매크로가 정의 된 머리글을 포함하지 않은 것으로 보입니다. 컴파일러가 암시 적 선언에 대해 불평하는 이유는이 함수가 int을 반환하는 함수라고 생각하기 때문입니다.

관련 문제