-2

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

我正在使用代码块

但请考虑这个程序:

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

}

仅打印“世界!”。

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

4 回答 4

9

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

不。

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

于 2013-08-12T02:56:07.293 回答
2

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

  1. GCC 支持 C 中的嵌套函数,作为语言扩展。
  2. 与 C 相关的 D 语言具有嵌套函数。

和 CodeBlocks 仅使用 GCC 编译器,因此您不会收到任何错误。

对于问题

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

不,你不能,这是编译器解释从哪里开始执行程序的方式。它将以主要之一作为本地。

还,

你没有得到“你好”打印

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

于 2013-08-12T03:54:13.603 回答
0

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

#include    <stdio.h>
void main()
{
    printf("Inside 1st main\n");
        func1();
}
#define main func1
void main()
{
    printf("Inside 2nd main\n");
}
  • 保持预处理器原样。否则你会得到错误。
于 2015-02-06T11:36:54.877 回答
0

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

于 2013-08-12T03:46:54.193 回答