清零Struct的char数组成员

时间:2017-08-22 13:19:26

标签: arrays c++11 struct embedded

我看过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'};

没有编译错误,但我仍然看到不需要的数据"在区成员。

1 个答案:

答案 0 :(得分:-1)

某些嵌入式工具链要求您调用内置函数来初始化数据,作为启动函数的一部分,然后将初始化数据从ROM复制到RAM中的工作存储空间。

例如,使用Renesas RX平台,需要调用_INITSCT()函数。根据编译器文档:

  

调用RAM区域部分(_INITSCT)的初始化例程。未初始化的数据部分初始化为   零。对于初始化数据部分,ROM区域的初始值被复制到RAM区域。提供了_INITSCT   作为标准库。

这也适用于您的系统吗?