问题描述
我遇到了一些我无法理解的奇怪事情:
#include <EEPROM.h>
struct Settings {
char stringy[24] = "initial";
};
void setup() {
Serial.begin(74880);
EEPROM.begin(100);
Settings s;
strncpy(s.stringy,"a string",sizeof(s.stringy));
EEPROM.put(0,s);
Settings s3 = readSettings();
Serial.println(s3.stringy);
}
Settings& readSettings() {
Settings s2;
Serial.println(s2.stringy);
EEPROM.get(0,s2);
delay(1);
return s2;
}
void loop()
{
}
EEPROM的实现是这样的:https://github.com/esp8266/Arduino/tree/master/libraries/EEPROM
initial
a string
但是,如果我评论delay(1)
,则它将打印
initial
initial
什么? delay(1)
似乎可以用其他任何语句代替。
这是怎么回事?这种奇怪的异步行为来自何处?
如果我让readSettings
返回一个Settings
对象而不是Settings&
,那么问题也就消失了。
我很困惑,我在这里想念什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)