2011-12-01 2 views
1

cw.h 파일에 내 cw.cpp 파일에서 호출하려는 extern 함수가 포함되어 있습니다.C++ extern 함수 오류 : 함수에 너무 많은 인수가 있습니다.

이들은 .h에서 이와 같이 표현됩니다. Type 구조체 (단지 예를 들어, 함수가 아닌 함수의 실제 이름)의 선언과 함께 파일 :

extern Type* new_type(), match(), sharetype(); 

그러나 그들의 정의와 구현이 cw.cpp 파일에 있습니다.
각 함수에는 하나 이상의 매개 변수가 전달됩니다. 내가 컴파일 할 때

, 나는 각각의 기능이 오류 메시지가 표시되지 계속 :

cw.h:11: error: too many arguments to function Type new_type() 
cw.cpp:575: error: at this point in file 

나는 한 그것을 해결하는 방법을 모르고는. 그리고 지난 시간 (-_-)

EDIT [이 해결] 검색했습니다 :

내가 매개 변수의 유형과 일치하도록 .h 파일에 내 코드를 변경하는 기능으로 전달되는 때 다시 불렀어. 더 이상 오류가 없습니다.

+2

보여주십시오 cw.cpp :

귀하의 매개 변수는 정의와 일치해야합니다. 문제의 요지는 당신의 선언이며 정의가 일치하지 않습니다. 선언 한대로 매개 변수를 사용하지 않는 void 함수이므로 1조차 인수가 너무 많습니다. 컴파일러에 귀를 기울이십시오 ;-) – AJG85

답변

4

C++에서 ()으로 선언 된 함수는 프로토 타입이므로 함수가 인수를 사용하지 않는다는 것을 의미합니다. C++에서는 (void)을 사용하는 것과 같습니다. 그것은 C에서와 같은 의미를 가지지 않는다 (즉, 함수는 불특정 다수의 인수를 취한다).

+0

그래서 괄호 안에'void '를 추가해야했습니다. –

+2

@Lady_ari : 아니요, 함수에 _correct_ 프로토 타입을 제공해야합니다. 그들이 어떻게 정의되어 있는지 모르겠으므로, 이것이 무엇인지 말할 수는 없습니다. –

+0

그래서 함수에 전달되는 매개 변수 유형을 추가 하시겠습니까? –

0

는 CharlesBailey의 대답 확장 : C++에서

Type* new_type() 인해 과부하에 Type* new_type(int)와는 다른 기능입니다. 더 완전한 답변을

//hpp: 
extern Type* new_type(int), match(float), sharetype(char); 

//cpp: 
Type* new_type(int x) { 
    // ... 
} 

Type* match(float x) { 
    // ... 
} 
관련 문제