为什么而不是函数编译器看到'unsigned int'?

时间:2013-03-01 11:24:28

标签: c

我真的不明白,我的代码有什么问题。之前我做的很相似,没有出现编译错误。我有一个代码:

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'需要加倍 警告:缺少原型。 为什么?

1 个答案:

答案 0 :(得分:0)

  

错误:发现'unsigned int'需要双重警告:缺少原型。

这表示您正在调用没有原型的函数。发生这种情况时,编译器会假定默认返回值类型为unsigned int。解决方案是添加缺少的原型。

您发布的代码不完整。似乎对shape的调用触发了错误。但shape已明确定义。最有可能在真实代码中shape位于不同的文件中,或首先在main下面声明。

您应该配置编译器,以便在未声明函数时它不接受函数调用。 C语言接受这些事情的事实可以追溯到语言的早期阶段。您应该将编译器配置为禁止这些古老和不良的做法。

当您编译时,程序将在运行时失败。您将在F中的循环中溢出main

最后,您的main函数声明不正确。它应该是

int main(void)