技巧和窍门–开发实时C ++应用程序的5个技巧

面向对象编程已成为开发应用程序的一种非常流行且至关重要的编程方法。尽管传统的嵌入式软件开发主要使用过程语言C进行开发,但C ++和其他面向对象的语言却逐渐开始在实时系统中获得关注。为了确保基于C ++的应用程序不会膨胀代码并充分利用面向对象的技术,这里有十个技巧,可为使用C ++的基于微控制器的系统开发实时应用程序。

软件开发概念。二进制代码的C ++(C加号)编程语言。

提示#1 –将constexpr用于常量,而不是#define

在为实时系统开发C ++应用程序时,constexpr关键字优于#define。保证constexpr关键字是一个编译时常量,并且与#define不同,它具有明确定义的类型信息。例如,想要在C中创建版本号的开发人员可能会写:

#定义VERSION_MAJOR 1
#定义VERSION_MINOR 0
#定义VERSION_RELEASE 0

在C ++中,首选方法如下:

constexpr unsigned int version_major = 1U;
constexpr unsigned int version_minor = 0U;
constexpr unsigned int version_release = 0U;

注意,我们可以清楚地将const定义为unsigned int。 constexpr关键字还可以用于创建其他类型的常量,例如int,float,array等。

技巧2 –使用名称空间来组织和封装应用程序数据

在C语言中,开发人员倾向于使用结构或使用预处理器定义常数来组织数据。在C ++中,开发人员可以组织应用程序数据,以便利用名称空间对其进行封装,组织和轻松读取。可以使用以下语法定义C ++中的名称空间:

命名空间数据
{
unsigned int mydata;
}

在这种情况下,名称空间是数据,并且具有单个成员mydata。可以通过编写以下代码来完成对名称空间的访问:

数据:: mydata

它使用范围解析运算符指定mydata位于数据中。建议使用匿名名称空间,即名称为数据的名称空间来创建局部静态变量。

提示#3 –在NULL上使用nullptr

C语言中经常遇到的一个问题是,在多个库文件中定义了NULL,并且每个定义都不一致。使用NULL通常会导致混乱和潜在的问题。在C ++中,定义了一个新的关键字nullptr,该关键字可用于将指针分配给null并检查指针当前是否为null。例如,

//默认情况下初始化为null
unsigned int * myptr;

if(myptr == nullptr)
{
//做一些初始化指针的操作
}

提示4 –使用模板

模板允许开发人员创建可应用于不同类型数据的函数或类。这使开发人员可以创建单个函数或类,该函数或类对于不同的应用程序可以轻松地重用和扩展。可以使用函数或类之前的template关键字轻松地创建模板,如下所示:

模板
无效myFunction(const T&)
{
//在T上执行工作
}

然后可以通过执行以下操作将该函数与不同的数据类型一起使用:
myFunction(1); //传递int
myFunction(3.14)//传递浮点数

模板是一项非常强大的功能,可以极大地提高代码的重用性和可伸缩性。

提示5 –使用内置布尔类型

在C语言中使用bool总是感觉很棘手。开发人员必须找到正确的库stdbool.h,似乎并不是每个编译器都支持该库,因此常常迫使开发人员创建自己的定义。即使很容易找到布尔值,布尔值也可以保存一个简单的对与错以外的值,因为布尔值存储的不仅仅是一个位。任何大于等于1的值都被认为是正确的。更糟糕的是,开发人员应该使用TRUE,True还是True总是令人困惑! C ++具有内置的布尔类型,只能容纳true或false值。非常简单的事情,这使应用程序的编程更简单,并使软件更易于阅读。

结论

希望在实时应用程序中使用C ++的开发人员应遵循许多其他更改和建议,但这些技巧将帮助开发人员入门。

One thought 上 “Tips and Tricks –开发实时C ++应用程序的5个技巧”

  1. 好文章,雅各布–Thanks for it.

    两个注意事项:constexpr语句需要赋值运算符,‘=’:
    constexpr unsigned int version_major = 1U;

    另外,应仔细考虑模板的使用。他们都是伟大的–I use them a lot–但是必须知道,与函数不同,它们可能导致编译器在某些情况下创建重复的代码。不过,没有理由不使用它们。许多程序员没有’t,以为他们夸大了代码。请注意!

    (重载功能在某种意义上“duplicates”, but folks don’不必担心*他们*。很奇怪。)

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.