c语言中,main是不是预定义标识符?

您所在的位置:网站首页 c语言中u是什么 c语言中,main是不是预定义标识符?

c语言中,main是不是预定义标识符?

2023-03-13 16:25| 来源: 网络整理| 查看: 265

C语言中,main不是“关键字(keyword)”。

更加细节一些,main也不是“预定义(pre-defined)”标识符。而是一个“预声明(pre-declared)”标识符。

一般而言,在C中,当使用“define”或者“pre-define”这个词汇时,表示有内存分配的操作;而使用“declare”或者“pre-declare”时,意味着仅仅是说有这个东西但是不涉及内存分配。

main为什么是“预声明(pre-declared)”标识符呢?参见 stackoverflow 上的下面这个问题:

Where is main stored & is main a keyword? I do know that main() is a method but I am asking about "main"

大概意思是:

在C语言中,你写的代码要被链接到一个很小的运行时库中,这个库中有程序的真正入口点。这个小运行时库先做一些事情,比如建立堆栈等,然后它会调用一个函数叫做“main”。这个调用是硬编码在这个小运行时库中的。

也就是说,main函数这个名字,已经被运行时库提前使用了(调用)。所以你必须写一个main函数。这个main也就是“预声明(pre-declared)”的标识符。

然而,在工程上,我们并不去区分(懒得区分)这个main到底是keyword还是预声明标识符。反正我们不会在main函数名字之外使用“main”这个标识符。

与main有关的概念是程序执行的“入口点”(Entry Point)。

在下面这篇维基百科文章中,说明了各种语言的入口点

https://en.wikipedia.org/wiki/Entry_point

在很多类C语言中,都有一个函数名字叫做 main。main可以看作是“用户代码”的显式入口点,但实际上,很多时候并不是用户程序的入口点。

C、C++、D、Rust、Kotlin等编程语言中都有一个函数叫做“main”;

Java中也有个函数叫做main,但它是一个静态方法;

C#中有个静态函数叫做 Main,首字母大写了。

go语言中,程序从 main 包的 main 函数开始执行。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3