首页 > 解决方案 > 如何在 C 中编译和运行`main;`

问题描述

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]

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

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

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

标签: ccompilationmain

解决方案


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

但因为main是特殊的,这就是你得到第二个警告的原因。它让您知道您的定义main方式与通常的定义方式不同。

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


推荐阅读