如何在 C 中编译和 运行`main;`

How to compile and run `main;` in C

main;

这是可以用C编译的最小程序。 编译警告(gcc):

test.c:1:1: warning: type defaults to ‘int’ in declaration of ‘main’ [-Wimplicit-int]
test.c:1:1: warning: ‘main’ is usually a function [-Wmain]

我想从句法上理解它的意思,即:

我知道函数的默认 return 类型在省略时是 int。我还听说过在 main 之前调用的 _start 函数。这意味着它正在调用一个尚未定义的函数(?)。

为什么 运行 时可执行文件会出现段错误?

因为您没有为 main 指定类型,编译器默认为 int 类型。不是返回 int 的函数,而是 int。从句法的角度来看这是合法的,因为您的代码中也可以有 myvar;,它也可以声明为 int.

但是因为 main 是特殊的,所以你会收到第二个警告。它让您知道您定义 main 的方式与通常的定义方式不同。

因此,当您编译此程序并尝试 运行 它时,它期望 main 成为函数的开始,而实际上它只是一个 int 变量。这就是导致段错误的原因。