main 函数和程序执行

每个 C 程序都有必须命名为 main 的主函数。 main 函数充当程序执行的起点。 它通常通过将调用定向到程序中的其他函数来控制程序执行。

一些限制适用于 main 函数,而不适用于任何其他 C 函数。 main 函数:

  • 无法声明为 inline
  • 无法声明为 static
  • 无法提取其地址。
  • 无法从程序调用。

main 函数签名

main 函数没有声明,因为它内置于语言中。 如果有,则 main 的声明语法如下所示:

int main( void );
int main( int argc, char *argv[ ] );
int main( int argc, char *argv[ ], char *envp[ ] );

main 函数使用其中一个签名隐式声明。 定义 main 函数时,可以使用其中的任何签名。 Microsoft 编译器还允许 main 在未返回值时返回类型 voidwmainargvenvp 参数还可以定义为类型 char**。 有关参数的详细信息,请参阅参数说明

备注

源程序中的函数执行一个或多个特定任务。 main 函数可调用这些函数来执行其各自的任务。 当 main 调用另一个函数时,它会将执行控制权交给该函数,以便执行在该函数中的第一个语句处开始。 当执行 return 语句或到达函数末尾时,函数将控制权返回给 main

可以声明任何函数(包括 main)以包含参数。 术语“参数”或“形参”指的是接收传递到函数的值的标识符。 有关将实参传递到形参的信息,请参阅参数。 当一个函数调用另一个函数时,被调用的函数将从实施调用的函数接收其参数的值。 这些值称为参数。 可以将形参声明为 main,以便让它使用函数签名中显示的格式从命令行接收实参。

在将信息传递给 main 函数时,通常将参数命名为 argcargv,尽管 C 编译器不需要这些名称。 传统上,如果将第三个参数传递给 main,该参数将命名为 envpargcargvenvp 的类型由 C 语言定义。 还可以将 argv 声明为 char** argv,将 envp 声明为 char** envp。 本节后面的示例演示如何使用这三个参数访问命令行自变量。 以下各节说明了这些参数。

如果你的代码遵循 Unicode 编程模型,则可以使用 main 的 Microsoft 特定的宽字符版本 wmain 作为程序的入口点。 有关 main 的此宽字符版本的详细信息,请参阅使用 wmain

main 终止

程序通常在从 main 返回或到达其末尾时停止执行,虽然它也可能由于各种原因在程序的其他点终止。 例如,检测到某些错误条件时,你可能需要强制终止程序。 为此,可以使用 exit 函数。 有关 exit 的详细信息和用法示例,请参阅 exit

请参阅

main 函数和命令行参数 (C++)
分析 C 命令行参数