编译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
相关产品推荐
相关产品推荐

