C:程序中可以有两个main()函数吗?

时间:2013-08-12 02:46:00

标签: c standards

我看到了关于在C程序中有两个main()的其他问题:

  

我正在使用CodeBlocks

但请考虑这个计划:

void main()
{
    void main()
    {
        printf("hello!");
    }
    printf("World!");

}

仅打印“世界!”。

  • 我实际上正在编写这些代码片段以检查引擎盖下发生了什么。
  • 我通过编写奇怪的代码以某种方式得到怀疑(因为我在程序中遇到错误和意外行为),但我无法知道它们为什么会发生
  • 我可以参考C语言的参考吗? 在此先感谢。

4 个答案:

答案 0 :(得分:9)

  

C:程序中可以有两个main()函数吗?

没有

无论如何,您发布的代码无效C,C中没有嵌套函数。

答案 1 :(得分:2)

标准C和C ++不支持嵌套函数,但是:

  1. GCC支持C语言中的嵌套函数,作为语言扩展。
  2. D语言与C相关,具有嵌套函数。
  3. 和CodeBlocks仅使用GCC编译器,因此您没有收到任何错误。

    关于问题

      

    关于在C程序中有两个main()

    不,你不能,这就是编译器如何解释从何处开始执行程序。它将主要作为本地之一。

    另外,

      

    你没有得到“你好”打印

    因为当编译器开始执行你的第一个main()函数时,它会将第二个main()作为本地函数,并且因为你没有调用第二个main(),所以字符串不会被获取打印。

答案 2 :(得分:0)

不,main或任何其他编程语言中不能有两个C函数。您发布的代码不是有效的C程序。它不会编译。

答案 3 :(得分:0)

是的,有可能在C中有两个主要功能。可以通过使用宏/预定义函数搞乱编译器来完成。这是代码片段,

#include    <stdio.h>
void main()
{
    printf("Inside 1st main\n");
        func1();
}
#define main func1
void main()
{
    printf("Inside 2nd main\n");
}
  • 保持预处理器不变。否则你会收到错误。