You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Digispark替换Wire库时遭遇返回类型冲突错误求助

解决Digispark替换Wire库时的返回类型冲突错误

咱们先把问题根源说清楚:你碰到的编译错误,本质是SoftWire库重写Print类的write方法时返回类型不匹配。Digispark核心的Print类里,write(const uint8_t*, size_t)是返回void的虚函数,但SoftWire库中同名方法却返回size_t,这违反了C++的函数重写规则,直接触发了编译器报错。

下面是具体的修复步骤:

  • 找到你的SoftWire库安装目录,打开SoftWire.h文件
  • 定位到第101行左右的这段代码:
    size_t write(const uint8_t *data, size_t quantity) {
    
  • 将返回类型从size_t改为void,修改后如下:
    void write(const uint8_t *data, size_t quantity) {
    
  • 接着打开SoftWire.cpp文件,找到对应的方法实现,去掉内部的return语句(因为返回类型变成了void)。比如原来的实现里可能有return count;这类代码,直接删除这行即可。

修改完成后重新编译代码,这个返回类型冲突的错误应该就能解决了。

另外,关于你提到的闪存占用问题,替换成SoftWire/USIWire后,应该能腾出足够空间同时运行DigiUSB和BH1750的逻辑。如果USIWire也遇到类似问题,用同样的思路修改对应库中的write方法返回类型即可。

内容的提问来源于stack exchange,提问作者C. Winters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:07:23