C++ 嵌入式开发:从正确启动到硬件驱动
1. 正确的启动方式
在 C++ 编程中,静态变量的初始化是一个需要关注的点。如果静态变量的默认值就是我们期望的值,那么显式初始化就不是必需的。例如:
struct protocol_frame
{
static std::uint8_t count;
protocol_frame() { }
};
// 默认初始化
std::uint8_t protocol_frame::count;
像下面这些静态变量,默认初始化就足够了,显式初始化反而会增加代码大小和预初始化阶段的运行时间:
namespace
{
std::uint8_t key = 0; // 不必要
float val = 0.0F; // 不必要
bool flag = false; // 不必要
}
然而,如果静态变量的初始值与默认值不同,则需要显式初始化,例如:
namespace
{
std::uint8_t version = 3U; // 显式初始化
float f = 4.56F; // 显式初始化
bool flag = true; // 显式初始化
}
2. 避免使用未初始化的对象
静态初始化在设计稳定软件时具有重要的运行时