我真的不明白,我的代码有什么问题。之前我做的很相似,没有出现编译错误。我有一个代码:
double shape(int i,double x)
{
double fun,h,L;
int n;
n=100;
L=1.0;
h=L/n;
x=x-i*h;
x=fabs(x);
if(x<=h)
fun=(1.0-x/h);
else
fun=0.0;
return fun;
}
void main()
{
int N=101;
double O,F,h;
h=0.001;
for(int i=0;i<N;i++)
{
F=h*(i+1);
O=shape(i,F);
}
}
在最后一行它给我编译错误: 错误:发现'unsigned int'需要加倍 警告:缺少原型。 为什么?
答案 0 :(得分:0)
错误:发现'unsigned int'需要双重警告:缺少原型。
这表示您正在调用没有原型的函数。发生这种情况时,编译器会假定默认返回值类型为unsigned int
。解决方案是添加缺少的原型。
您发布的代码不完整。似乎对shape
的调用触发了错误。但shape
已明确定义。最有可能在真实代码中shape
位于不同的文件中,或首先在main
下面声明。
您应该配置编译器,以便在未声明函数时它不接受函数调用。 C语言接受这些事情的事实可以追溯到语言的早期阶段。您应该将编译器配置为禁止这些古老和不良的做法。
当您编译时,程序将在运行时失败。您将在F
中的循环中溢出main
。
最后,您的main
函数声明不正确。它应该是
int main(void)