在过去的几年里,C++已经成为一种在嵌入式系统中更流行的语言。C++为嵌入式开发人员提供了现代工具,以便在何时使用设计更多可重用、可扩展和可移植的代码。该语言一直在与时俱进,并提供了许多优于C的改进。在这篇文章中,让我们研究一下C程序员会立即欣赏的五个简单的C++技巧。
技巧#1–使用Consexpr进行条件编译
许多用C编写的嵌入式代码库的祸根是大量的#if/#elif/#else预处理器指令。预处理器指令通常用于有条件地将代码编译进和编译出图像。例如,如果我们有三个不同版本的硬件,我们通常会创建一个宏,然后根据构建配置进行检查以确定引脚分配等。使用预处理器进行条件编译的问题是代码变得混乱,有时很难理解。
从C++17开始,该语言为开发人员引入了使用constexpr有条件地编译代码的能力。开发人员可以利用此编译器功能来优化基于模板的代码,甚至可以删除使用#ifdef块的预处理器指令。
技巧#2–远程循环
C和C++中的基本流控制机制是for循环。由于没有简化的基于范围的选项,Cfor循环一直停留在黑暗时代。
从C++11开始,添加了一个额外版本的for循环,这使得使用范围值更容易。
考虑到我们希望在enum或对象中的某个范围内工作的频率,语法更清晰且更易于阅读。
技巧#3–使用auto
嵌入式开发人员过去常常使用auto来指定一个仅限于当前范围的变量。Auto是一个类似于static的存储类说明符,只是它指定存储是本地的,并且一旦我们的作用域应该自动销毁变量,而不像static允许变量持久化。
在C++中,auto是一个非常有用的关键字,它告诉编译器自动为开发人员分配数据类型。
技巧#4–宇宙飞船操作员
当你需要编写一个条件语句来检查一个值是否小于、大于或等于另一个值时,有时会很烦人。就在最近,C++20添加了一个三向比较运算符,可以简化可读性和代码。这个运算符=,通常被称为“宇宙飞船”运算符,因为它看起来像一艘宇宙飞船。
使用宇宙飞船操作符很简单。例如,如果我们有两个变量并且想要进行三向比较,我们可能会编写如下代码:
intVar1=Value1;
intVar2=Value2;
autoResult=Var1=Var2;
如果Var1Var2,则Result将小于0。如果Var1Var2,则Result将大于0。如果Var1等于Var2,则Result将为0。
技巧#5–获取字符串的大小
C中的字符串只不过是一个以“\0”作为最后一个数组条目的char数组。许多错误导致应用程序从C如何处理字符串。忘记字符串中的字符串终止符、错误地调整数组大小或使用可能导致缓冲区溢出的字符串函数等情况并不少见。
在C++中,可以更安全地管理字符串。例如,如果开发人员需要获取字符串的长度,他们可以简单地使用与字符串关联的length()方法。建议读者研究C++中提供的字符串库。你会惊讶于使用字符串是多么的安全和容易!
C++在许多嵌入式应用程序中越来越受欢迎,尤其是那些从头开始进行嵌入式开发且不依赖大量遗留代码的应用程序。C++是C的自然扩展,成为更现代的编程语言。在C中几乎不可能的设计模式和技术在C++中很容易。