c - 如何在 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
。这意味着它正在调用一个尚未定义的函数(?)。
为什么运行时可执行文件会出现段错误?
解决方案
因为您没有为 指定类型main
,所以编译器默认为int
. 不是返回 的函数int
,而是返回int
. 从句法的角度来看,这是合法的,因为您也可以myvar;
在代码中声明为int
.
但因为main
是特殊的,这就是你得到第二个警告的原因。它让您知道您的定义main
方式与通常的定义方式不同。
因此,当您编译该程序并尝试运行它时,它实际上只是一个变量,但它期望main
成为函数的开始。int
这就是导致段错误的原因。
推荐阅读
- r - 关于 R 中优化的问题
- java - 在 Spring Boot 项目中声明同一类/DAO 的多个实例是否有害?
- angular - 如何从Angular http post返回OKObjectResult作为字符串
- reactjs - 使用 Apollo react 用于 S3 图像上传的 useMutation 加载器
- machine-learning - 非凸优化
- css - 如何从左到右逐渐改变元素的背景颜色
- java - 有没有办法验证正则表达式在 Java 中完全匹配?
- python - Keras:keras 模型的二阶导数始终为 0
- angular - 无法在页面加载时将值设置回角度选择下拉列表
- conda - 如何将非代码文件添加到 conda 包?