繁体   English   中英

如何在 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]

从句法上讲,我想了解它的含义,即:

  • 为什么在声明 function 时使用分号?
  • 为什么缺少的括号和花括号是合法的?

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

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

因为您没有为main指定类型,所以编译器默认为int类型。 不是 function 返回一个int ,而是一个int 从句法的角度来看这是合法的,因为您也可以使用myvar; 在您的代码中也将被声明为int

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM