我有一个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
文件中的代码,以匹配在调用函数时传递给函数的参数类型。
没有更多的错误。
答案 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) {
// ...
}