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

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

3天内不再提示

嵌入式系统开发的注释和调试代码

星星科技指导员 来源:嵌入式计算设计 作者:Colin Walls 2022-07-01 09:39 次阅读

嵌入式系统开发软件需要时间——通常比最初预期的要多。

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

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

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

文档——代码中的注释

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

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

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

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

文档

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

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

临时代码删除

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

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

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

poYBAGK-UJCAMQwNAABSx6SLl5E799.png

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

调试/跟踪代码

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

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

poYBAGK-UJiAGl8JAAB058cer_Q934.png

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

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

poYBAGK-UJ6AIHqOAABsiJtyfsA217.png

这个双重否定看起来很笨拙,但是这个符号用于控制标准的assert()宏。程序员需要定义符号来抑制调试模式。我感谢 Michael Barr,他在嵌入式 C 编码标准中提高了我对这种方法的认识。

审核编辑:郭婷

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

    关注

    4981

    文章

    18266

    浏览量

    288224
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72892
  • 编译器
    +关注

    关注

    1

    文章

    1575

    浏览量

    48606
收藏 人收藏

    评论

    相关推荐

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是嵌入式系统开发中最常用的编程语言之一。成为一名
    发表于 04-07 16:03

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是嵌入式系统开发中最常用的编程语言之一。成为一名
    发表于 03-25 14:12

    ARM嵌入式Linux 系统开发从入门到精通

    ARM嵌入式Linux 系统开发从入门到精通
    发表于 03-10 18:44

    嵌入式工程师需要掌握哪些技术?

    Bluetooth、Wi-Fi和LoRa等的了解也是有益的。 5. 调试和故障排除能力:嵌入式系统开发中经常会遇到各种问题和错误。因此,具备良好的调试和故障排除能力是非常重要的。你需
    发表于 03-04 16:38

    嵌入式学习步骤

    硬件组件。 (4).开发固件:编写嵌入式系统的固件,这是嵌入式系统的软件部分。固件负责控制硬件并执行特定任务。 (5).
    发表于 02-02 15:24

    QE for AFE嵌入式系统开发的评估工具说明

    电子发烧友网站提供《QE for AFE嵌入式系统开发的评估工具说明.pdf》资料免费下载
    发表于 12-21 10:27 0次下载
    QE for AFE<b class='flag-5'>嵌入式</b><b class='flag-5'>系统开发</b>的评估工具说明

    嵌入式C开发中的JTAG接口定义及主要特点

    JTAG(联合测试行动组)是测试和调试集成电路的标准,广泛用于嵌入式系统开发
    的头像 发表于 12-12 11:08 725次阅读
    <b class='flag-5'>嵌入式</b>C<b class='flag-5'>开发</b>中的JTAG接口定义及主要特点

    嵌入式开发为什么需要输出调试信息?

    嵌入式开发为什么需要输出调试信息? 因为输出调试信息是嵌入式开发中一项非常重要的实践,它有助于保证软件的可靠性、稳定性和性能,也是故障排查的关键工具之一。
    发表于 11-28 16:46

    基于模型的设计嵌入式电机控制系统开发

    电子发烧友网站提供《基于模型的设计嵌入式电机控制系统开发.pdf》资料免费下载
    发表于 11-23 09:26 0次下载
    基于模型的设计<b class='flag-5'>嵌入式</b>电机控制<b class='flag-5'>系统开发</b>

    嵌入式系统开发资料分享

    电子发烧友网站提供《嵌入式系统开发资料分享.rar》资料免费下载
    发表于 11-10 09:41 0次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统开发</b>资料分享

    嵌入式程序基于源代码仿真调试

    前面一课设计了51单片机最小系统电路,使用51单片机的I/O口控制发光二极管的状态,并装载运行了使用keil编写的嵌入式程序。本次实验应用proteus结合keil对嵌入式C程序进行源代码
    的头像 发表于 11-01 09:24 554次阅读
    <b class='flag-5'>嵌入式</b>程序基于源<b class='flag-5'>代码</b>仿真<b class='flag-5'>调试</b>

    基于网络的嵌入式监控系统开发

    电子发烧友网站提供《基于网络的嵌入式监控系统开发.pdf》资料免费下载
    发表于 10-12 10:30 0次下载
    基于网络的<b class='flag-5'>嵌入式</b>监控<b class='flag-5'>系统开发</b>

    什么是嵌入式Linux?

    之有运行程序的能力与作用。在很多智能家电开发,智能产品的研究上有着主导的作用。(对个人、团队开发产品有兴趣的朋友一定要看看嵌入式!) linux的嵌入式
    发表于 10-11 13:47

    嵌入式Linux应用开发的完全手册

    是怎样和硬件发生作用的。 同样,对于想从硬件岗位转到软件岗位的人,对于想从传统单片机(比如51单片机)编程进一·步学习“有操作系统的”嵌入式编程的人,需要找到一个学习的切入点:先掌握各个硬件部件的简单编程
    发表于 09-25 07:12

    嵌入式用什么语言编程?

    嵌入式用什么语言编程? 嵌入式系统应用越来越广泛,专业的嵌入式工程师对这样的问题肯定不会太关注,只是针对一些初级入门者,做个简单的了解,认识一下这个广受关注的技术是由哪种语言编写的?
    发表于 05-18 10:08