'main' 函数是否属于 C 中的函数定义?

Is the 'main' function classified as a function definition in C?

'main' 函数是否属于 C 中的函数定义?

我问的原因是我看到了一段代码,在解释代码顶部的函数声明和底部的函数定义之间的区别时,有人问我 'main' 函数也被认为是函数定义,或者如果它被认为是其他东西(因为与其他函数不同,主函数是必不可少的)。

Main 是一个与其他所有函数一样的函数。只是具有不同的语义和不同的要求。

语义是程序的开始。

要求它有一组预定义的签名

在 C 的托管实现中(正常排序),main() 与任何其他函数相比唯一新颖的功能是:

  • 这是程序开始执行的地方。
  • 不必预先申报。
  • 如果执行到最后的 },它的行为就好像在 }*[= 之前​​有一个 return 0; 41=].

在所有其他方面,main()是一个正常的功能。它可以在 C 中递归调用(而 C++ 程序不能递归调用其 main())。

由于函数是在指定函数体时定义的,因此当您编写 int main(void) { … }int main(int argc, char **argv) { … } 或任何其他替代方法时,您正在定义函数,因为存在大括号,因此定义了函数体.

* 有关 return 0; 语句的一些小警告参见 What should main() return in C and C++ 如果return 类型与 int.

不兼容