为啥我们不能在 C 语言中拥有两个主要功能?
Posted
技术标签:
【中文标题】为啥我们不能在 C 语言中拥有两个主要功能?【英文标题】:Why can't we have two main functions in C language?为什么我们不能在 C 语言中拥有两个主要功能? 【发布时间】:2013-10-09 13:01:00 【问题描述】:谁能解释一下内部发生了什么,除了main
是起点,我们不能有两个起点。
int main()
int main()
return 0;
return 0;
【问题讨论】:
我不明白你在问什么。你能澄清一下吗? 嵌套函数不是 C 的一部分。有一个 GCC 扩展。你问的是这个吗? 【参考方案1】:这不是合法的 C 代码 - 在 C 中,函数不能在另一个内部定义。
您不能这样做没有根本原因,但是实现这样的函数要么使激活记录布局复杂化,并且会降低效率(因为像闭包这样的考虑),要么会引入内存的潜力错误(如果你返回一个指向另一个函数内部的函数的指针,而内部函数引用外部函数中的数据,会发生什么?)为了简单和高效,C 只是不支持这一点。
希望这会有所帮助!
【讨论】:
s/declared/defined/ 你可以在函数definition中declare一个函数;你不能嵌套定义(尽管 gcc 支持它作为扩展)。【参考方案2】:标准 C 不允许在另一个函数中定义一个函数。一些编译器支持将此作为扩展名,但名称必须不同,否则按名称调用函数会模棱两可。
main
是程序的入口点。根据定义,一个程序只有一个入口点:它是在程序启动时(经过一些初始化)执行的函数,并且在该函数返回时(经过一些清理之后)程序退出。
【讨论】:
【参考方案3】:因为程序必须有一个起点。命名为“main”的函数是 C 中的默认起点。这就是 C 保留“main”作为名称的原因,您不能拥有另一个名为“main”的函数。
【讨论】:
以上是关于为啥我们不能在 C 语言中拥有两个主要功能?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在网上找的一些c语言程序的代码在vc++6.0中编译总是出现错误?求指教
c语言char和int可以互相赋值,但指针不能赋值,char *和int *不能直接赋值,为啥呢?谢谢