发布时间:2026/8/4 6:28:08
嵌入式开发学习日志(c语言预处理及指针入门) day12 持续更新中 一、GCC 编译的四个完整步骤我们在终端输入一条gcc main.c -o a.out命令时背后其实经历了 4 个独立的阶段。理解这个过程对排查编译错误如之前的stray \357编码错误非常有帮助。阶段指令参数输入文件输出文件主要工作1. 预处理-E.c.i展开头文件#include、宏替换#define、处理条件编译2. 编译-S.i.s将 C 代码翻译为汇编指令3. 汇编-c.s.o将汇编指令转为二进制机器码4. 链接(无).o可执行文件链接系统库函数合并目标文件实操顺序.c→.i→.s→.o→可执行程序二、预处理命令预处理在编译之前执行本质是文本替换不进行语法运算。1. 宏定义#define(1) 无参宏符号常量#define PI 3.1415(2) 带参宏宏函数#define ADD(a,b) ((a)(b)) #define MAX(a,b) ((a)(b)?(a):(b)) #define AREA(r) ((PI)*(r)*(r))✅ 宏书写重要规范文本替换宏仅仅是文本替换运行前展开。括号保护表达式参数全部加括号防止运算符优先级出错。命名规范宏标识符建议大写宏末尾不要加分号。 宏 VS 普通函数宏预处理阶段替换代码副本增多程序体积变大无函数调用开销。函数运行时调用需要保护/恢复现场存在调用开销。2. 头文件包含#include#include stdio.h尖括号。系统头文件编译器去系统路径如/usr/include查找。#include head.h双引号。自定义头文件优先在当前项目目录查找。头文件内一般存放其他头文件、类型声明、宏定义、函数声明、全局变量声明。3. 条件编译根据宏是否定义、表达式真假选择性编译部分代码。#if 表达式 ... #endif表达式为真则编译。常用于#if 0注释大块代码。#ifdef 宏名如果宏已定义编译对应代码常用于调试信息输出。#ifndef 宏名如果没有定义该宏则编译代码。最经典用途头文件防止重复包含。#ifndef __HEAD_H__ #define __HEAD_H__ // 头文件内容 #endif三、指针1. 基础概念内存程序运行可用存储空间以字节为单位编号。地址内存字节的编号。指针即内存地址。指针变量专门用来存放地址的变量。2. 指针变量定义与大小格式基类型 *指针名;int *pint; char *pch;基类型代表指针指向空间的数据类型。*标识该变量是指针。指针大小64 位系统所有指针占用8 字节32 位系统指针占用4 字节。3. 初始化与野指针int num 100; int *p NULL; // 1. 初始化为空指针推荐 int *p num; // 2. 定义同时赋值 p num; // 3. 赋值让指针指向 num⚠️ 野指针未初始化、或者指向已经释放内存的指针。规避方案指针初始化为NULL或赋值合法变量地址。4. 两个核心运算符运算符名称作用示例取地址获取变量首字节地址p num;(修改指针指向)*解引用访问指针指向内存中的数据*p 666;(修改指向空间的值)极易混淆区分p num;→ 修改指针本身让指针指向 num。*p num;→ 修改指针指向空间的数据指针指向不变。5. 指针算术运算允许运算、-、、--。*、/、%对指针无意义。指针 ± 整数向前/向后偏移若干个元素不是字节char *pc; pc1;// 向后偏移 1 字节int *pi; pi1;// 向后偏移 4 字节 (假设 int 为 4 字节)指针 - 指针前提同类型、指向同一块连续内存数组。结果两个地址之间相隔的元素个数。公式(地址差值) / sizeof(基类型)比较大小指针可以使用 !比较。6. 指针作函数参数修改变量值想要在函数内修改主函数变量的值必须传递变量地址指针传递。仅读取可以传值也可以传地址。多返回值使用指针参数带回结果。四、指针与一维数组数组名a等价于a[0]代表数组首元素地址。数组名是地址常量不能赋值如a xxx;非法。下标与指针等价a[0]*aa[1]*(a1)a[n]*(an)函数形参void print_array(int a[], int len); // 写法1 void print_array(int *pa, int len); // 写法2 (本质相同)数组传参本质是传递数组首元素地址退化为指针。五、易错点汇总宏末尾不要加分号带参宏所有参数必须包裹括号。头文件#ifndef用于防止重复包含。赋值pnum改指向和*pnum改值含义完全不同。指针减法两个指针相减得到的是元素个数不是字节差值。偏移量指针运算偏移单位由基类型决定。数组名是常量不能被赋值。崩溃原因使用未初始化指针野指针会导致程序崩溃。

相关新闻

2026/8/4 6:28:08

平板坡口机支持哪些坡口形式?V型、U型、J型一次揭秘!

在工业制造领域,从事金属加工、焊接工程等工作的工程师、技术人员和企业主们,在平板坡口机选型上常常踩坑。不少人花费大量资金购买了坡口机,却发现加工效率低下,无法满足生产需求;或者加工精度不达标,导致…

2026/8/4 6:23:08

Vibe Coding重构:提升AI协作开发效率的关键策略

1. 项目概述:重构Vibe Coding的核心价值Vibe Coding作为一种新兴的编码范式,正在改变开发者与AI协作的方式。不同于传统编程中严格的语法约束,Vibe Coding更强调通过自然语言表达设计意图,让AI助手(如Cursor/Claude Co…

2026/8/4 6:23:08

SpringBoot+Vue构建智能招聘考试系统实战

1. 项目概述这个基于SpringBoot的个人求职招聘考试管理系统,是我去年为一个职业培训机构开发的实战项目。系统主要解决求职者在应聘过程中遇到的笔试环节痛点——从简历投递到笔试准备再到成绩查询的全流程管理难题。市面上大多数招聘系统要么侧重简历管理&#xff…

2026/8/4 7:18:11

塑料激光焊接红外测温原理:从辐射物理到过程质量控制

摘要在塑料激光透射焊接过程中,红外测温技术作为一种非接触式过程监控手段,其物理本质是对焊接界面衰减热辐射信号的定量采集。本文通过辐射传热学原理,系统分析了实际测量温度与焊点真实温度的关系,阐述了相对温度值在批量生产质…

2026/8/4 7:18:11

Wireshark网络抓包实战:从协议解析到性能优化

1. 为什么我们需要Wireshark抓包?2003年,当Gerald Combs首次发布Ethereal(Wireshark前身)时,网络工程师们终于有了一把打开网络通信黑匣子的钥匙。如今在数字化转型浪潮中,Wireshark已成为网络故障排查的&q…

2026/8/4 7:18:11

JavaScript异步编程:从Promise到async/await的实战指南

这次我们来看 JavaScript 中的同步与异步,以及处理异步操作的现代方案:Promise、async 和 await。对于前端和后端开发者来说,理解这些概念是写出高效、不阻塞代码的关键。很多初学者在面对回调地狱、Uncaught (in promise) Error这类报错时感…

2026/8/4 7:18:11

部署属于你的gitlab

许多刚做开发的朋友,进到一家公司,公司项目代码管理用的是GitLab或者极狐等工具。感觉很高大上,用git工具拉取、提交代码。实际这只是一个工具,只要你学会了部署,你也可以部署自己的代码管理工具。 (下面是我的官网&a…

2026/8/4 7:13:11

DVWA靶场XSS攻防实战:从反射型漏洞到安全编码的思维演进

1. 项目概述:一次完整的XSS攻防思维训练最近在带新人做安全测试的入门训练,我总会把DVWA靶场的XSS(Reflected)关卡作为第一个实战点。这不仅仅是因为它经典,更因为从Low到Impossible的四个难度等级,完美地勾…

2026/8/3 21:14:30

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/4 0:02:01

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/3 22:40:58

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/3 13:26:41

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/3 16:43:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…