实时C++编程:指针范围界定、随机数生成与面向对象技术
1. 指针范围界定与随机数生成
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);
}
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



