实时C++编程入门与面向对象技术应用
1. 实时C++基础工具
1.1 使用 <span>
界定指针范围
从C++20开始,标准库在 <span>
库中支持 std::span
模板。 std::span
是对连续值范围的高效抽象,例如程序代码中缓冲区或常量表中的值。在处理值范围或内存缓冲区时,使用 span
非常方便,特别是当这些数据存储为传统的C风格数组或在实时编程中常见的类似内存结构时。
以下是一个使用 std::span
清除编译时已知长度的传统遗留缓冲区的示例代码:
// chapter03_21-001_span.cpp
#include <span>
void clear_buffer(std::span<std::uint8_t> pb)
{
for(auto u : pb)
{
u = UINT8_C(0);
}
}
#define LEGACY_BUFFER_LENGTH 64U
uint8_t legacy_buffer[LEGACY_BUFFER_LENGTH];
void do_something()
{
clear_buffer(legacy_buffer);
}