- 0
- 0
- 约6.37千字
- 约 16页
- 2026-08-28 发布于河南
- 举报
2024年嵌入式面试试题(附答案)
1.请说明C语言中volatile关键字的作用,以及常见使用场景,它能否保证变量操作的原子性?
答:volatile关键字的核心作用是告知编译器不对该变量进行读写优化,每次对该变量的读写操作都必须从其对应的内存地址中存取,不能将变量的值缓存在通用寄存器中做优化处理。常见使用场景包括三类:①硬件外设的状态寄存器/控制寄存器:这类寄存器的值会随硬件状态动态变化,每次读写都必须从实际内存地址获取,不能缓存;②中断服务程序中修改、主程序中会访问的全局变量:如果不加volatile,编译器会认为该变量不会被修改,优化后主程序只会读取一次寄存器缓存的值,无法感知中断中修改的变化;③多任务实时系统中,多个任务共享访问的全局变量:避免编译器优化导致任务无法感知其他任务对变量的修改。需要注意的是,C语言中的volatile无法保证变量操作的原子性,也不能阻止编译器的指令重排,仅能禁止读写缓存优化,若要保证原子性需要额外加互斥锁或利用CPU的原子操作指令实现。
2.宏define与const修饰的常量有什么区别?
答:二者核心区别如下:①处理阶段不同:define是预处理阶段完成文本替换,不对内容做编译处理;const是编译阶段处理,会参与编译检查;②类型检查不同:define没有类型信息,仅做纯文本替换,不会做类型检查,容易引发隐式类型错误;const有明确的
您可能关注的文档
最近下载
- 2024公路桥梁现场检测技术规程.docx
- 09S302雨水斗选用及安装图集(清晰).docx VIP
- QCR 562.4-2018铁路隧道防排水材料 第4部分:排水盲管与检查井.pdf VIP
- 解剖学基础及人体正常结构教案.pdf VIP
- 2026年应急物资储备应急物资应急评估报告.docx
- 电子产品装配及工艺全套课件.pptx
- T_CSAE 184-2021 电动汽车动力蓄电池健康状态评价指标及估算误差试验方法.docx VIP
- ISO 23279 2017 焊缝无损检测 超声波检测 焊缝中的显示特征(中文版).pdf
- 2025年中国水稻专用杀虫剂市场调查研究报告.docx
- 孕产妇危重症紧急救治专家共识(2026年版).pptx VIP
原创力文档

文档评论(0)