“隐含的function声明”是什么意思?

#include  int main() { int a = 4; int b = 3; addNumbers(a, b); } int addNumbers(int a, int b) { return a + b; } 

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

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

所以要么这样做:

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

或这个:

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

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

 #include  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 } 

在main之前添加addNumbers

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

更新

要打印它, printf("%i",addNumbers(a, b)); 将在上述情况下显示7

您可以将整个函数移动到调用它的位置之上,或者使用函数原型,如下所示:

 #include  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; } 

您需要在第一次使用之前向上移动addNumbers函数或其定义的前向声明:

 // 2161304 #include  // forward declaration int addNumbers(int a, int b); int main() { int a = 4; int b = 3; addNumbers(a, b); } // alternatively move this up before main ... int addNumbers(int a, int b) { return a + b; } 

关于mainreturn

程序将编译没有。 标准定义的主要签名是:

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

有三个便携式返回值:

 0, EXIT_SUCCESS, EXIT_FAILURE 

它们在stdlib.h中定义。

在使用之前通过在main()之前添加原型来声明函数:

 int addNumbers(int a, int b); 

或者在main()之前移动整个addNumbers函数。

我同意声明和定义的事情,但我没有得到上述代码的任何编译错误。我的gcc版本是“4.4.1-4ubuntu9”。任何想法。

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

  #include  int main() { int a = 4; int b = 3; printf("%d", addNumbers(a, b)); // Printf added. } int addNumbers(int a, int b) { return a + b; } 

如果你的编译器是C99标准它会抛出并且错误“隐式声明”,因为默认促销在C99标准中已经过时了。 如果你尝试使用C89标准进行编译,这将是允许的。

在C99中,标准function原型是必要的

由于编译器一个接一个地执行一行,当它看到函数调用时,它必须有关于该函数调用的函数,所以我的朋友你需要先告诉编译器这个函数。用它。

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

  1. 宣言
  2. 呼叫
  3. 定义
  4. 返回