我在
Android NDK中使用NEON内在函数和内联汇编时遇到问题.
当使用GCC 4.6和4.8编译C代码时,像float32x4_t这样的NEON类型给出了“无效参数”错误,但是,如果编译为C,则代码编译正常.
例如,这里有一些代码:
inline float32x4_t VectorAdd(float32x4_t a,float32x4_t b) { return vaddq_f32(a,b); }
我在这里得到两个错误:
>在函数本身:无效的参数’候选人是:? vaddq_f32(?,?)’.
>调用函数的位置:无效参数’候选者是:? VectorAdd(?,?)’.
所有NEON类型都显示为?在错误消息中,正确显示非NEON类型.
同样奇怪的是,只使用NEON类型作为返回值的函数(例如,vld1q_f32和我的抽象包装器)不会受到错误的影响.
我在GCC Explorer 4.6和4.5中尝试了相同的代码,并且没有错误,并且生成了正确和优化的程序集,它不适用于Android NDK.
解决方法
作为解决方法,在Window / Preferences / C/C++ / Code Analysis中,将“Invalid Arguments”错误的严重性设置为Warning,以便这些虚假错误不会阻止启动应用程序.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。