.c文件 ——>.i文件——>.s文件——>.o文件——>可执行文件
预处理 编译 汇编 链接
命令:gcc -o helloworld.i helloworld.c -E #只让gcc执行预处理命令
预处理完成的任务:1.展开头文件
2.进行宏替换(单纯的字符串的替换)
宏函数:
#define ADD(a,b) (a+b)
与普通自定义函数相比好处是不会限定a,b的数据类型 例如:同一个加法宏函数,即可以用于两个整型数据的求和,也可用于两个浮点型数据的求和,而函数要做到这一点的话必须要对函数的形参类型进行改动
注意区别:
typedef 数据类型 别名
eg:typedf int tni
typedf int *p # 表示用p表示int *
typedf unsigned long size_t
注意:typedf和宏定义的区别是在预处理时并不会被替换
通常的用法是给自己定义的数据类型起别名
typedf是有作用域的,而宏定义在声明之后都可以使用
预处理 编译 汇编 链接
命令:gcc -o helloworld.i helloworld.c -E #只让gcc执行预处理命令
预处理完成的任务:1.展开头文件
2.进行宏替换(单纯的字符串的替换)
宏函数:
#define ADD(a,b) (a+b)
与普通自定义函数相比好处是不会限定a,b的数据类型 例如:同一个加法宏函数,即可以用于两个整型数据的求和,也可用于两个浮点型数据的求和,而函数要做到这一点的话必须要对函数的形参类型进行改动
注意区别:
typedef 数据类型 别名
eg:typedf int tni
typedf int *p # 表示用p表示int *
typedf unsigned long size_t
注意:typedf和宏定义的区别是在预处理时并不会被替换
通常的用法是给自己定义的数据类型起别名
typedf是有作用域的,而宏定义在声明之后都可以使用
本文详细解析了gcc编译过程中从.c文件到可执行文件的四个步骤:预处理、编译、汇编、链接。同时,介绍了宏函数的概念与优势,并通过实例演示了如何使用宏函数进行代码复用和提高效率。
1062

被折叠的 条评论
为什么被折叠?



