嵌入式从0到精通——C语言函数(三)

发布时间:2026/8/4 18:38:49
嵌入式从0到精通——C语言函数(三) 预处理命令是 C 语言开发中不可或缺的一部分它们在编译之前对源代码进行文本替换、文件包含和条件编译等操作极大地提高了代码的灵活性、可维护性和可移植性。掌握预处理命令的使用是编写高质量 C 语言程序的基础。目录GCC 编译步骤宏定义头文件包含条件编译预处理命令1. GCC 编译的四个步骤gcc main.c ———— a.out预处理展开和 # 相关的代码展开头文件、展开宏、处理预处理命令#include stdio.h#define PI 3.1415#if 0#endifgcc -E main.c -o main.i;编译将 C 语言程序转换为汇编指令。gcc -S main.i -o main.s;汇编将汇编指令转换为二进制可执行程序gcc -c main.s -o main.o;链接负责链接系统的函数/库函数的实现gcc main.o -o main;2. 预处理命令宏定义#define 标识符 值 #define PI 3.1415注意1. 宏作为预处理命令负责在预处理阶段展开不做运算只是代码的替换2. 宏标识符最好大写定义宏不能加分号3. 宏只是代码的替换能加括号就加括号4. 宏和函数的区别宏是预处理阶段的代码替换会使得代码体积增大。函数是在运行时调用需要保护现场和恢复现场。带参宏宏函数#define 标识符(参数1, 参数2, ...) 宏的实现 #define ADD(A, B) A B头文件包含#include stdio.h #include head.h 自己编写的头文件 可以有包含的其他头文件 声明的数据类型 宏定义 函数和全局变量的声明注意1. 表示包含的是系统中的头文件让编译器从系统路径下找2. 表示包含的头文件是用户自己定义的头文件让编译器在当前路径下找条件编译1. 头文件中防止头文件重复包含#ifndef 宏 #define 宏 // 头文件内容 #endif 根据宏有没有被定义出来决定该头文件中的内容要不要加入到编译中2. 条件编译#if 逻辑结果表达式 // 代码 #endif 根据逻辑结果表达式的结果决定中间的代码要不要加入到编译中 代码屏蔽 #if 0 代码 #endif#ifdef 宏 // 代码1 #else // 代码2 #endif 根据宏有没有被定义决定编译代码1还是代码2 #ifndef 宏 // 代码1 #else // 代码 #endif