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

编译Android系统CPP代码时遇Winfinite-recursion错误求助

解决Android编译中SensorEventQueue::read无限递归警告

这段代码的核心问题是SensorEventQueue::read函数在内部直接调用了自身,触发了无限递归警告:

ssize_t SensorEventQueue::read(ASensorEvent* events, unsigned long numEvents)
{
        return this->read(events, static_cast<size_t>(numEvents));
}

你的目标是将unsigned long类型的参数转换为size_t后,调用父类对应的read方法,而不是当前类的重载函数。修改方式如下:

假设SensorEventQueue的父类为ASensorEventQueue(符合Android传感器API的命名逻辑),将代码修改为:

ssize_t SensorEventQueue::read(ASensorEvent* events, unsigned long numEvents)
{
        return ASensorEventQueue::read(events, static_cast<size_t>(numEvents));
}

如果你的SensorEventQueue继承自其他类,替换成实际的父类名称即可。这样就能正确传递参数到父类的实现,彻底解决无限递归问题。

注意:不要随意修改函数的返回值类型(比如改成void),因为该函数需要遵循父类的接口规范,修改返回值会破坏接口兼容性,引发更多编译错误。

内容的提问来源于stack exchange,提问作者MrBrause

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:57:05