C ++ extern函数错误:函数参数太多

时间:2011-12-01 22:12:59

标签: c++ function extern

我有一个cw.h文件,里面有一堆extern函数,我想从我的cw.cpp文件调用。

它们在.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 个答案:

答案 0 :(得分:4)

在C ++中,用()声明的函数是原型,意味着该函数不带参数。在C ++中,它等同于使用(void)。它与C中的含义不同(即函数采用未指定数量的参数)。

答案 1 :(得分: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) {
  // ...
}