main()是C中的预定义函数吗?

deb*_*thy 5 c program-entry-point function

可能重复:
C,C++,Java,C#中的main()

我是编程的新手,特别是C.我看过的每个例子都有一个"主要"功能 - 这是以某种方式预先定义的,这样名称对编译器或运行时具有特殊意义......或者它只是C程序员中常见的习惯用法(比如使用"foo"和"bar"表示任意变量名).

Jer*_*fin 12

不,您需要main在程序中定义.但是,由于它是从运行时调用的,所以main必须提供的接口是预定义的(必须返回一个int,必须采用零参数或两个参数,第一个int是a char **,第二个是或等价char *[]).C和C++标准确实指定具有外部链接的函数main充当程序1的入口点.

至少在通常使用的术语中,预定义的函数将是标准库中的一个sin或多个printf,因此您可以使用它而无需自己编写.

1如果你想获得技术,那只适用于"托管"实现 - 也就是说,我们大多数人在大多数情况下使用这种方式生成在操作系统上运行的程序.一个"独立"的实现(一个产生直接在"裸机"上运行但没有操作系统的程序)可以自由地定义它认为合适的入口点.独立的实现也可以省略大多数正常的运行时库,只提供少量的头文件(例如<stddef.h>),几乎没有标准的库函数.


Dan*_*ing 8

是的,main是"定义"一词意义上的预定义函数.换句话说,C语言标准指定在程序启动时调用的函数应该被命名main.它不仅是程序员作为我们有一个约定foobar.

精细打印:从C编程上下文中"已定义"一词的技术含义来看,没有该main功能不是"预定义" - 编译器或C库不提供预定义的命名函数main.您需要定义自己的main函数实现(显然,您应该命名它main).

  • +1考虑到他是编程新手. (2认同)

Jon*_*nna 0

不,或者你无法定义一个。

它不是预定义的,但它作为入口点的含义(如果存在)是已定义的。