C 什么是;隐式函数声明“;什么意思? #包括 int main() { INTA=4; int b=3; 地址编号(a、b); } 整数地址编号(整数a、整数b) { 返回a+b; }

C 什么是;隐式函数声明“;什么意思? #包括 int main() { INTA=4; int b=3; 地址编号(a、b); } 整数地址编号(整数a、整数b) { 返回a+b; },c,C,为什么不编译,我收到一条消息说隐式声明函数addNumbers()?在main()中调用函数之前,需要声明函数。要么把它移到main之前,要么至少在那里声明它。 另外,您应该在主函数的末尾添加return 0,因为它应该返回int #include <stdio.h> int main() { int a = 4; int b = 3; addNumbers(a, b); } int addNumbers(int a, int b) { retur

为什么不编译,我收到一条消息说隐式声明函数
addNumbers()

在main()中调用函数之前,需要声明函数。要么把它移到main之前,要么至少在那里声明它。 另外,您应该在主函数的末尾添加
return 0
,因为它应该返回
int

#include <stdio.h>

int main()
{
    int a = 4;
    int b = 3;
    addNumbers(a, b);
}

int addNumbers(int a, int b)
{
    return a + b;
}
#包括
整数地址编号(整数a、整数b)
{
返回a+b;
}
int main()
{
INTA=4;
int b=3;
地址编号(a、b);
返回0;
}

您必须将整个
addNumber()
函数移到main上方,或者提供一个原型。后者通过以下方式完成:

#include <stdio.h>

int addNumbers(int a, int b)
{
    return a + b;
}

int main()
{
    int a = 4;
    int b = 3;
    addNumbers(a, b);
    return 0;
}

把addnumber放在main前面

int addNumbers(int a, int b);

int main()
{
//    code of main() here
}

int addNumbers(int a, int b)
{
//code of addNumbers() here
}
更新


要打印它,
printf(“%i”,addNumbers(a,b))将显示
7

main()
之前定义函数,或者在
main()
之前提供其原型

因此,要么这样做:

int addNumbers(int a, int b)
{
    return a + b;
}

int main()
{
    int a = 4;
    int b = 3;

    addNumbers(a, b);
}
#包括
整数地址编号(整数a、整数b)
{//定义
}
int main()
{//main中的代码
地址编号(a、b);
}
或者这个:

#include <stdio.h>

int addNumbers(int a, int b)
{ //definition
}

int main()
{ //Code in main
  addNumbers(a, b);
}
#包括
int addnumber(int,int);
int main()
{//main中的代码
地址编号(a、b);
}
整数地址编号(整数a、整数b)
{//定义
}

在使用函数之前声明函数,方法是在main()之前添加原型:


或者将整个addNumbers函数移到main()之前。

您可以将整个函数移到调用点上方,或者使用函数原型,如下所示:

int addNumbers(int a, int b);
#包括
int addnumber(int a,int b);//功能原型
int main()
{
INTA=4;
int b=3;
地址编号(a、b);
}
整数地址编号(整数a、整数b)
{
返回a+b;
}

在首次使用之前,您需要对
addNumbers
函数的正向声明或其定义进行上移:

#include <stdio.h>

int addNumbers(int a, int b); // function prototype

int main()
{
    int a = 4;
    int b = 3;
    addNumbers(a, b);
}

int addNumbers(int a, int b)
{
    return a + b;
}
有三个可移植的返回值:

int main(void)
int main(int argc, char **argv)

stdlib.h

中定义,如果编译器是C99标准编译器,它会抛出并出错“隐式声明”,因为默认升级在C99标准中已过时。 如果您尝试使用C89标准进行编译,这是允许的


在C99中,标准函数原型是必需的

因为编译器在看到函数调用时会执行一行又一行,它必须有关于主函数调用的函数的信息。因此,我的朋友,在你可以使用它之前,你需要告诉编译器关于该函数的信息。

我同意声明和定义的东西,但上面的代码没有任何编译错误。我的gcc版本是“4.4.1-4ubuntu9”。有什么想法吗

我做了一些修改来测试代码

0, EXIT_SUCCESS, EXIT_FAILURE
#包括
int main()
{
INTA=4;
int b=3;
printf(“%d”,addNumbers(a,b));//添加了printf。
}
整数地址编号(整数a、整数b)
{
返回a+b;
}

使用前必须声明函数。 在处理函数时,请记住这4个基本部分

  • 声明
  • 召唤
  • 定义
  • 返回

  • 除了在main之前声明函数addNumbers之外,下面是我关于C风格的2美分(不适用于C++):1)没有参数的函数应该有签名(void)——因此
    intmain(void)
    ;2) main应该返回C中的值——因此
    返回0
    是必需的。那么我如何打印它呢?因为当我运行它时,它什么也没有显示,我已经尝试将main从返回和的值更改为printf(addNumbers(a,b));但毫无疑问,这是另一个问题。另外,如果您使用stackoverflow.comShow代码上的搜索,我相信您可以找到答案,而且您可能应该为该代码创建新问题it@AlexanderPoluektov:实际上,C99遵循C++的领导,并且(错误地在我的观点中)允许您不返回从代码>主()/<代码>中返回的值,它相当于返回0。我认为这很悲哀,而且对确保返回值的函数总是返回值这一原则没有帮助。@ruibm:另外,你应该在主函数的末尾加上返回0,因为它应该返回int:不,这是可选的是的,我知道是,但这是一个很好的编程实践,如果你打开学究模式,编译器可能会发出警告。进一步挑剔,在C语言中,它是一个“函数”,而不是一个“方法”。否则就好了。顺便说一句,函数声明通常不是在.h文件中完成的吗?@R.Bemrose:当有多个源文件时,是的。当只有一个源文件时,如此处所示,函数应声明为静态函数(因为它不需要从任何其他文件访问,因为只有一个文件要编译)。行为未定义。根据标准:使用前必须声明函数。
    int main(void)
    int main(int argc, char **argv)
    
    0, EXIT_SUCCESS, EXIT_FAILURE
    
     #include <stdio.h>
    
    int main()
    {
        int a = 4;
        int b = 3;
        printf("%d", addNumbers(a, b));   // Printf added.
    }
    
    int addNumbers(int a, int b)
    {
        return a + b;
    }