main 函数
main 是程序的大门。操作系统加载你的可执行文件后,第一站几乎总是 main。
1. 概念
- 一个完整可执行程序里,main 只能有一个
- 返回类型通常是 int:0 或 EXIT_SUCCESS 表示成功
- 也可以写 int main() 或 int main(void)
2. 常见写法例子
| 1 | /* 写法 A:最常见 */ |
| 2 | int main(void) { |
| 3 | printf("A\n"); |
| 4 | return 0; |
| 5 | } |
| 6 | |
| 7 | /* 写法 B:带命令行参数 */ |
| 8 | int main(int argc, char *argv[]) { |
| 9 | /* argc:参数个数;argv:字符串数组 */ |
| 10 | return 0; |
| 11 | } |
3. 拆解 argc / argv(先建立地图)
假如运行:./tool input.txt 3,那么 argc 通常是 3,argv[0] 是程序名,argv[1] 是 input.txt,argv[2] 是 3。你现在只需知道「命令行也能把数据交给程序」。
4. 嵌入式里的 main 特殊性
| 1 | int main(void) { |
| 2 | Hardware_Init(); |
| 3 | while (1) { |
| 4 | /* 主循环:轮询按键、处理数据、喂狗等 */ |
| 5 | } |
| 6 | /* 很多固件永远走不到 return */ |
| 7 | return 0; |
| 8 | } |
嵌入式程序常「跑不完」:进入 while(1) 后一直工作。这完全正常,不代表你写错了。
5. 易错点
- 把 main 写成 Main 或 MAIN → 链接器找不到入口
- 在 main 里写错返回类型 void main(有的编译器警告/不推荐)
- 忘记写 main 却只写了一堆函数 → 链接失败