news 2026/8/4 18:38:47

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式从0到精通——C语言函数(三)

预处理命令是 C 语言开发中不可或缺的一部分,它们在编译之前对源代码进行文本替换、文件包含和条件编译等操作,极大地提高了代码的灵活性、可维护性和可移植性。掌握预处理命令的使用,是编写高质量 C 语言程序的基础。

目录

  • GCC 编译步骤
  • 宏定义
  • 头文件包含
  • 条件编译

预处理命令

1. GCC 编译的四个步骤

gcc main.c ————> a.out

  • 预处理:展开和 # 相关的代码:展开头文件、展开宏、处理预处理命令

#include <stdio.h>

#define PI 3.1415

#if 0

#endif

gcc -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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/4 18:35:51

常州开公司的老板注意!这地址选不对,每年几万补贴直接打水漂

常州开公司的朋友们啊&#xff0c;我就问一句&#xff0c;当初注册的时候是不是光盯着哪个地址便宜就选哪个&#xff1f;压根没管什么园区政策不政策的&#xff1f;我跟你说&#xff0c;就这一个疏忽&#xff0c;每年几万块补贴你可能直接就错过了&#xff01; 上个月有个做智能…

作者头像 李华
网站建设 2026/8/4 18:25:06

Shell脚本在自动化运维中的核心价值与实践技巧

1. Shell编程的核心价值与应用场景Shell脚本是Linux/Unix系统管理员和开发者的瑞士军刀。我在十多年的运维工作中&#xff0c;90%的重复性工作都通过Shell脚本实现自动化。比如每天凌晨3点自动备份数据库、批量处理日志文件、监控服务器资源使用情况等。这些看似简单的脚本&…

作者头像 李华
网站建设 2026/8/4 18:24:38

喜马拉雅下载器完整指南:轻松下载VIP和付费专辑

喜马拉雅下载器完整指南&#xff1a;轻松下载VIP和付费专辑 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 xmly-downloader-qt5是…

作者头像 李华
网站建设 2026/8/4 18:24:38

WPS在苹果生态中的演进与挑战

1. WPS iPad版登顶背后的生态逻辑 当WPS Office在iPad应用商店登顶效率类应用榜首时&#xff0c;这个现象远比表面看到的更有深意。作为一款跨平台办公软件&#xff0c;WPS在iPad端的成功实际上揭示了苹果生态演进的三个阶段变化&#xff1a; 首先是文件兼容性壁垒的打破。早期…

作者头像 李华