"隐含的功能声明"是什么意思?

bob*_*bob 18 c

#include <stdio.h>

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

int addNumbers(int a, int b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

为什么这不编译,我得到一条消息说隐含的函数声明addNumbers()

Pra*_*rav 20

要么之前定义函数,要么之前main()提供它的原型main().

所以要么这样做:

#include <stdio.h>

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

int main()
{ //Code in main
  addNumbers(a, b);
}
Run Code Online (Sandbox Code Playgroud)

或这个:

#include <stdio.h>

int addNumbers(int, int);
int main()
{ //Code in main
  addNumbers(a, b);
}

int addNumbers(int a, int b)
{ // definition
}
Run Code Online (Sandbox Code Playgroud)


rui*_*rui 8

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

#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;
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,我知道它是,但它是一个很好的编程习惯,如果你打开迂腐模式,编译器会发出警告. (2认同)

sha*_*oth 6

您必须将整个addNumber()函数移动到main之上或提供原型.后者按以下方式完成:

int addNumbers(int a, int b);

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

int addNumbers(int a, int b)
{
//code of addNumbers() here
}
Run Code Online (Sandbox Code Playgroud)