使用参数调用函数会产生两个错误

时间:2014-01-17 16:23:10

标签: c variables

我收到的错误:

main.c:63:7: error: conflicting types for 'integrieren'
main.c:39:6: note: previous implicit declaration of 'integrieren' was here

MAIN.C:39:

        A = integrieren(dx,y);

float A,x[1001],y[1001],dx;

main.c中:63:

float integrieren(float dx,float y[1001])

2 个答案:

答案 0 :(得分:1)

您尝试在float integrieren(float dx,float y[1001])使用main.c:39之前,可能没有del c

默认int行为是隐式在这种情况下声明函数,但它假定的类型是main.c:39。因此,您在integrieren处得到一个明确的声明,在第63行得到一个明确的声明,以及错误。我认为这是ansi-c行为,更新版本的标准会在调用未定义函数时将其称为错误,并且您将获得“Undefined symbol float integrieren(float dx,float y[1001]);”或类似的错误(尽管99%肯定)。 / p>

只需在main.c中的第39行上方声明#include<fancy_stuff.h> #include<fancier_stuff.h> float integrieren(float dx,float y[1001]); //declaration int main(){ //main stuff return 0; } //definition float integrieren(float dx,float y[1001]){ //body } ,它可能也应该位于全球范围内。

这样的东西
integrieren

然后编译器知道{{1}}呼叫签名是什么。你不需要在那里定义主体,只需声明它。

答案 1 :(得分:0)

在第39行,当你使用integieren()而没有首先对它进行原型化时,编译器假定它的返回类型,并且所有参数都是整数。

将integierer()的定义移到调用它的地方之上,或者先将其原型化。