繁体   English   中英

C main函数是可选的,您可以在其外部编写代码吗?

[英]Is the C main function optional and can you write code outside of it?

通常,当我在GitHub上查看源代码时, main功能会被忽略或在其外部有代码。 我完成的教程告诉我-我不能做这些事情。 我有什么想念的吗?

操作系统中托管的常规完整C程序必须具有main例程。

GitHub上的项目可能只是程序的一部分,例如打算在其他程序中使用的例程的集合。 (这样的集合通常被称为库)。如果源代码不打算以自己是一个完整的程序,那么它并不需要有一个main例程。 稍后,将在自己的程序中使用例程集合的人添加一个main例程。

C源代码也可以编译并与其他编程语言编写的源代码结合使用。 C标准未指定其行为,因此它特定于执行此操作时使用的各种开发人员工具。 这样的混合程序必须具有一些主例程,但是可以将其称为main以外的其他东西。 尽管如此, main作为main例程的名称已变得非常流行,因此使用非常频繁。

C源代码可用于特殊软件,例如操作系统内核。 与托管环境相比,C标准描述了一个独立的环境。 在独立的环境中,许多事情都是针对特定系统定制的,包括如何设置程序的起始地址。 在这种情况下,例如,主入口点可能被称为start而不是main ,并且该入口点的地址可能会以某种特定于硬件的特殊数据结构传送到硬件。

关于函数之外的代码,可以是初始化表达式。 (对于在函数外部的初始化中可以使用哪些表达式有严格的限制。您不能在这些表达式中编写通用的C代码。)您必须显示特定的示例才能获得有关此问题的答案。

根据定义,可执行二进制文件的主要方法是应用程序的入口点。

库(或者,不需要操作系统执行的任何内容都不必具有主要功能

因此,如果没有主要功能,C代码本身可以很好地运行。 但是,您不能将任意代码放在函数之外(无论是主函数还是其他函数)..


通常您可以说:

  • “代码必须存在于C语言的函数中”(变量和宏除外)
  • 主要功能是执行二进制文件的OS入口点

[这有点简化,但IMO是一个好的经验法则]

这些样本根本不完整,要使程序正常运行,必须有一个入口点(对于标准C,这是主要的)。 代码语句必须在函数内部,尽管该函数不必是主要函数。

但是,可以在函数主体外部使用带有初始值设定项的变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM