一、C语言程序运行过程
1.编辑
- 选择一个适合的程序编辑软件,比如Notepad++,或者sublime编辑软件,更高级的有VSCode。
2.编译
- 预处理 :其过程为将头文件的具体内容从指定路径拷贝一份到当前程序中,若程序中有宏定义内容,则将宏定义展开,同时删除程序中的所有注释内容。生成一个后缀为.i的文件。
命令为 gcc hello.c -E -o hello.i - 编译 :其过程为检查源程序是否存在语法错误,如若通过检测,则将.i文件翻译成汇编文件。生成一个后缀为.s的文件。
命令为 gcc -S hello.i -o hello.s - 汇编 :其过程是将.s文件翻译成机器能识别的二进制目标文件。生成一个后缀为.o的文件。
命令为 gcc -c hello.s -o hello.o - 链接 :其过程是将此程序涉及到所有的目标文件即.o文件、库“粘合”在一起,得到最终的可执行文件。
例:如果程序设计到了printf函数,则会生成对应的printf.o文件,链接过程就是将这些涉及到的.o文件全部链接在一起。
命令为 gcc hello.o -o hello
3.运行
- 关于main函数的参数 main(int argc , char * argv[] )
- argc 原意为argument count 翻译为 内容的数量。具体含义表示 传递给main函数的参数个数(几串字符)。
- argv 原意为argument value 翻译为 内容的确切含义。具体存放的是传递给main函数的字符串的地址。
argv[0] 保存着第0串字符串的首地址
argv[1] 保存着第一串字符串的首地址。 …依次类推。
- 关于main函数的返回值
- return 0 表示程序正确执行且正常退出
- return -1 表示所执行程序权限不足
- return -2 执行的文件不存在
- return -3 执行代码错误
- 关于头文件的定义
- #include “stdio.h” 双引号定义的头文件表示先从当前路径检索头文件,如若找不到,则进入标准C库中检索
- #include <stdio.h> 两个尖括号定义头文件表示直接从标准C库中检索头文件信息
- 一般来说,自己定义的头文件则使用双引号,调用系统已经写好的函数则使用尖括号。如:stdio.h string.h 等。
- 关于C程序具体运行过程,会在后面章节给出
以上内容纯属个人观点,如有错误,欢迎纠正。