我收到的错误:
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])
答案 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()的定义移到调用它的地方之上,或者先将其原型化。