0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式系统设计中的注释和调试代码

星星科技指导员 来源:嵌入式计算设计 作者:Colin Walls 2022-06-20 16:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

造成这种情况的一个原因是,虽然初始编码可能进展迅速,但调试周期似乎是无休止的。以后,代码的维护是不可避免的,而且需要比预期更多的时间。这是因为在尝试修改之前准确理解代码的功能会产生开销。

这一观察的结果是,应高度重视代码的可读性。易于阅读的代码不太可能出现错误,因此减少了调试时间。如果代码易于理解,则更易于维护。因此,请始终牢记人类读者——毕竟,它可能是你。(我听说它建议你假设你的代码未来的维护者是一个知道你家庭地址的精神病患者。)

代码由两部分组成:编译器需要看到的东西(C 语句和声明)和需要对编译器隐藏的文本(主要是供人类读者使用的)。隐藏的东西主要是:

文档——代码中的注释

暂时删除的代码——调试过程中不可避免的一部分

调试/跟踪代码——可以根据需要打开和关闭

有趣的是,如果您取出纯粹为人类读者阅读的内容(其中还包括使用有意义的标识符和额外的空格,如换行符),结果是完全不可读的代码。一些软件公司利用这一点来分发源代码,同时保护他们的知识产权。

我将看看我们对编译器隐藏的东西。

文档

每个人都知道评论是个好主意,但我们都很懒惰。然而,这种努力是值得的。旧式/* 。.. */ C注释还可以,但我觉得 C++ 行尾[ //。.. ]的变化更清晰。它们仍然需要小心使用。例如,像这样的代码:

并且不要使用标签。它们不是便携式的。

临时代码删除

在调试和测试代码的过程中,能够暂时“关闭”一段代码通常很有用。许多程序员通过将/*放在开头,将*/放在结尾来“注释掉”代码以实现此结果。这是快速而肮脏的,但经常无法达到所需的结果。许多编译器不支持嵌套注释,因此,如果代码已经被注释,就会出现问题。总的来说,它容易出错,应该避免。

使用 C++ 风格的//注释符号——即,将//放在每行的开头——稍微好一点,但应用起来非常乏味,而且在删除时也可能容易出错。

实现此结果的最佳方法是使用预处理器指令,因此:

pYYBAGKwKjSALOWlAABZWkqWh5w343.png

在任何情况下,“关闭”的代码序列都不应包含在任何正在考虑发布的代码中。

调试/跟踪代码

另一种临时代码是为了便于在调试时输出或记录额外信息而包含的。尽管现代调试器和此类工具可能非常有效,但有时检测代码仍然是弄清楚到底发生了什么的最佳方式。现代开发工具是如此之快,以至于重建以创建启用调试的映像并不是一个严重的开销。

促进这一点的常用方法是使用预处理器指令,因此:

pYYBAGKwKjqAJ8EaAAB-nOlqiY0385.png

因此,当定义符号DEBUG_TRACE时,将包含调试代码。

一个稍微不同的方法是这样编码:

poYBAGKwKkKASFBzAAB3g2IwyBc961.png

这个双重否定看起来很笨拙,但是这个符号用于控制标准的assert()宏。程序员需要定义符号来抑制调试模式。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76716
  • 代码
    +关注

    关注

    30

    文章

    4942

    浏览量

    73159
  • 编译器
    +关注

    关注

    1

    文章

    1670

    浏览量

    51084
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    用普源MSO5000系列混合信号示波器高效调试嵌入式系统

    嵌入式系统调试,精准的信号捕获与分析是解决问题的关键。普源MSO5000系列混合信号示波器凭借其高性能参数与多功能集成特性,为工程师提供了高效调试
    的头像 发表于 11-13 11:57 98次阅读
    用普源MSO5000系列混合信号示波器高效<b class='flag-5'>调试</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>

    用是德MSO-X 3024T高效调试嵌入式系统的实战指南

    嵌入式系统开发,精准调试是攻克技术难题的关键。是德科技MSO-X 3024T示波器凭借其创新的触控交互与多功能集成设计,为嵌入式
    的头像 发表于 10-17 11:51 179次阅读
    用是德MSO-X 3024T高效<b class='flag-5'>调试</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>的实战指南

    嵌入式达到什么水平才能就业?

    工具定位问题具备嵌入式软件模块化设计能力:能按功能划分代码模块,编写规范的头文件与源文件,实现模块间低耦合调用会使用Git 进行版本管理:能提交代码、解决冲突、回滚版本,熟悉敏捷开发流程
    发表于 09-15 10:20

    是德示波器MSOX3052T在嵌入式系统的应用

    在现代电子系统设计嵌入式系统已成为智能设备与物联网的核心。面对日益复杂的硬件架构与软件算法,调试工具的性能直接决定了产品开发周期与最终可
    的头像 发表于 08-27 17:38 499次阅读
    是德示波器MSOX3052T在<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>中</b>的应用

    入行嵌入式应该怎么准备?

    知识: 一、C/C++编程C/C++是嵌入式系统开发中最常用的编程语言。熟练掌握C/C++语言将使你能够理解和编写底层驱动程序、操作系统以及与硬件交互的代码。对于
    发表于 08-06 10:34

    嵌入式系统,FLASH 的程序代码必须搬到 RAM 运行吗?

    嵌入式系统里,FLASH 的程序代码并非必须搬到 RAM 运行,这得由硬件配置、实际性能需求和应用场景共同决定。就像很多低端单片机,无论
    的头像 发表于 08-06 10:19 1143次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>中</b>,FLASH <b class='flag-5'>中</b>的程序<b class='flag-5'>代码</b>必须搬到 RAM <b class='flag-5'>中</b>运行吗?

    泰克示波器 MSO58 混合信号示波器在嵌入式系统调试的核心技巧

    嵌入式系统的开发与调试,泰克示波器 MSO58 混合信号示波器凭借其强大的功能和灵活的特性,成为工程师不可或缺的调试利器。掌握其核心
    的头像 发表于 07-01 16:28 426次阅读
    泰克示波器 MSO58 混合信号示波器在<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>调试</b><b class='flag-5'>中</b>的核心技巧

    普源示波器MSO5074在嵌入式系统联合调试的高效实践

    一、引言:嵌入式系统调试的挑战与示波器的必要性 嵌入式系统作为核心控制单元广泛应用于汽车、医疗设备、工业自动化等领域,其开发涉及硬件设计、软
    的头像 发表于 06-20 13:45 467次阅读
    普源示波器MSO5074在<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>联合<b class='flag-5'>调试</b><b class='flag-5'>中</b>的高效实践

    Python在嵌入式系统的应用场景

    你想把你的职业生涯提升到一个新的水平?Python在嵌入式系统中正在成为一股不可缺少的新力量。尽管传统上嵌入式开发更多地依赖于C和C++语言,Python的优势在于其简洁的语法、丰富的库和快速的开发周期,这使得它在某些
    的头像 发表于 03-19 14:10 1202次阅读

    泰克MDO32示波器在嵌入式系统调试的关键技术分析

    高性能的混合域示波器,在嵌入式系统调试中发挥着关键作用。本文将深入分析泰克MDO32示波器在嵌入式系统
    的头像 发表于 03-19 13:51 671次阅读
    泰克MDO32示波器在<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>调试</b><b class='flag-5'>中</b>的关键技术分析

    嵌入式系统代码优化与压缩技术

    在当今数字化时代,嵌入式系统广泛应用于各个领域,从智能家居设备到工业控制系统,从汽车电子到可穿戴设备,它们无处不在。而在嵌入式系统开发
    发表于 02-26 15:00

    如何提高嵌入式代码质量?

    并提升代码质量。 遵循良好的软件工程实践 良好的软件工程实践是提高代码质量的基础,特别是在嵌入式系统更为重要。以下是几个关键点:
    发表于 01-15 10:48

    MPU在嵌入式系统的应用

    一、MPU的基本功能 微处理器单元(MPU)是嵌入式系统的大脑,负责执行程序指令、处理数据和控制其他硬件设备。MPU的基本功能包括: 指令执行:MPU能够从存储器读取指令,解码这些
    的头像 发表于 01-08 09:26 1517次阅读

    嵌入式工程师常用的开发工具有哪些?

    。此外,ARM 公司的编译器也备受青睐,针对 ARM 架构的微控制器进行了深度优化,能够生成高效的代码。 三、调试工具 调试嵌入式开发过程中不可或缺的环节。J-Link
    发表于 12-20 15:29

    什么是嵌入式人工智能

    嵌入式人工智能是指将人工智能技术应用于嵌入式系统的一种技术。嵌入式系统
    的头像 发表于 12-11 09:23 1523次阅读
    什么是<b class='flag-5'>嵌入式</b>人工智能