我看过C++ Zero-out a struct array?和其他SO帖子。不幸的是,我还没有找到任何可以初始化结构的char数组成员的东西。
我有这个结构
struct SettingsData {
ModeType Mode = ModeType::Off;
char Zone[26];
double Temperature = 0.0;
OnOffState Heater = OnOffState::Off;
OnOffState Airconditioner = OnOffState::Off;
OnOffState Fan = OnOffState::Off;
bool ApplianceOn = false;
};
我正在寻找C ++这样做的方法。我意识到我应该使用成员初始化列表,但我无法弄清楚如何初始化char数组。我得到了
用作初始化程序的数组
错误。
我甚至尝试过
char Zone[26] = {'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'};
没有编译错误,但我仍然看到不需要的数据"在区成员。
答案 0 :(得分:-1)
某些嵌入式工具链要求您调用内置函数来初始化数据,作为启动函数的一部分,然后将初始化数据从ROM复制到RAM中的工作存储空间。
例如,使用Renesas RX平台,需要调用_INITSCT()
函数。根据编译器文档:
调用RAM区域部分(_INITSCT)的初始化例程。未初始化的数据部分初始化为 零。对于初始化数据部分,ROM区域的初始值被复制到RAM区域。提供了_INITSCT 作为标准库。
这也适用于您的系统吗?