esp8266貌似没有中文官方论坛?
最近发现8266的编译器貌似有个异常现象(会导致lambda内捕获到异常的this指针,貌似是lambda捕获的第一个变量的值被改变了)
然后发现我的esp8266的论坛(bbs.espressif.com)登不上去了。。用重置的密码也提示密码错误。。
esp8266的问题可以放在这里讨论吗?
-
- Posts: 17
- Joined: Wed Jul 25, 2018 8:11 am
esp8266的问题可以放在这里讨论吗?
Last edited by q515949148 on Wed Mar 27, 2019 7:27 pm, edited 2 times in total.
-
- Posts: 17
- Joined: Wed Jul 25, 2018 8:11 am
Re: esp8266的问题可以放在这里讨论吗?
异常代码如下(这是个类的成员函数)
void begin(std::function<void()> cb) {
CappActive* temp0 = this;
_s->moveto(Servo_max, [this, temp0, cb] {
this->_s->moveto(target[id()][1], cb);
});
}
在lambda函数中,调用这条语句 会随机触发 exception 9、28、29
打log发现 this的值在lambda函数内外是不一致的。lambda函数内的值小于0x200
改成这样就正常了
void begin(std::function<void()> cb) {
CappActive* temp0 = this;
_s->moveto(Servo_max, [this, temp0, cb] {
temp0->_s->moveto(target[id()][1], cb);
});
}
void begin(std::function<void()> cb) {
CappActive* temp0 = this;
_s->moveto(Servo_max, [this, temp0, cb] {
this->_s->moveto(target[id()][1], cb);
});
}
在lambda函数中,调用这条语句 会随机触发 exception 9、28、29
打log发现 this的值在lambda函数内外是不一致的。lambda函数内的值小于0x200
改成这样就正常了
void begin(std::function<void()> cb) {
CappActive* temp0 = this;
_s->moveto(Servo_max, [this, temp0, cb] {
temp0->_s->moveto(target[id()][1], cb);
});
}
Re: esp8266的问题可以放在这里讨论吗?
你可以直接在 ESP8266 的 GitHub 提问看看
https://github.com/espressif/ESP8266_RTOS_SDK
https://github.com/espressif/ESP8266_NONOS_SDK
https://github.com/espressif/ESP8266_RTOS_SDK
https://github.com/espressif/ESP8266_NONOS_SDK
Who is online
Users browsing this forum: No registered users and 170 guests