从源码到可执行程序的生产过程:
源码(.c文件)->经过预处理,变为.i源文件->经过编译,变为.S汇编文件->经过汇编,变为.O目标文件->经过链接,变为.elf可执行程序。
可简单理解为:将.C源文件经过编译(包括汇编)可以得到.O目标文件,将.O目标文件经过链接可以得到.elf的可执行文件。
1、gcc xx.c -c -o xx.o //将xx.c源文件只编译获得xx.o目标文件
2、gcc -E xx.c -o xx.i //将xx.c源文件只预处理获得xx.i源文件(多用于研究预处理过程,帮助debug程序)
常见的放在预处理中处理的:
1、头文件(#include<>和#include" “)
2、注释
3、#if #elif #endif #ifdef
4、宏定义
头文件的使用:
<>专门用来包含系统提供的头文件,” "用来包含自己写的头文件。
编译器中允许使用 -I 来附加指定路径去寻找头文件。
头文件的使用就是将头文件中的内容原地展开替换。
带参宏与内联函数:
带参宏:
带参宏的使用与带参函数类似,所不一样的是在使用带参宏的时候每个参数在宏体中引用时都必须加括号,最后整体再加一个括号。
eg:利用MAX宏,来求2个数中的较大一个
#define MAX(a,b) (((a)>(b))?(a):(b))
利用宏定义来表示一年中有多少秒。
#define SEC_
函数的宏定义与常用的函数库
最新推荐文章于 2024-04-10 21:21:08 发布
本文介绍了从源码到可执行程序的编译过程,强调了预处理阶段的宏定义、头文件和条件编译。讨论了带参宏与内联函数的区别,以及静态和动态链接库的工作原理。制作和使用静态、动态链接库的步骤也被详细阐述。
摘要由CSDN通过智能技术生成