NEON内在类型在C中工作,但在C++中抛出无效参数错误
NEON intrinsic types work in C but throw invalid arguments error in C++
我在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);
}
我这里有两个错误:
- 在函数本身:
Invalid arguments ' Candidates are: ? vaddq_f32(?, ?) '
- 其中函数被调用:
Invalid arguments ' Candidates are: ? VectorAdd(?, ?) '
所有近地天体类型显示为?在错误消息中,而非近地天体类型显示正确。
同样奇怪的是,只使用NEON类型作为返回值的函数(例如,vld1q_f32
和我的抽象包装器)不会出现错误。
我在GCC Explorer 4.6和4.5中尝试了相同的代码,没有错误,并且生成了正确和优化的程序集,但是,它不适用于Android NDK。
作为一种解决方法,在Window/Preferences/C/C++/Code Analysis中,将"无效参数"错误的严重性设置为Warning,这样这些虚假错误就不会阻止启动应用程序。
相关文章:
- C++声明模板参数阴影模板参数错误
- 为什么 CRTP 模板C++给出无效参数错误?
- (C/C++)fscanf_s从txt文件以字符形式读取数组时缺少整数参数错误
- 参数错误可能与类型不匹配有关?
- printf 和 strftime 的参数错误无效
- 如何修复"ctypes"。参数错误:参数 2:<键入"异常.类型错误">:RaspberryPi 中的错误类型"错误
- 如何修复"没有重载函数需要 2 个参数"错误C++
- 术语不计算为函数采用 1 个参数错误?
- 从带有 getline() 的文件读入一行上有多个信息得到无效参数错误
- 为什么我不能像使用 std::string::size_type 那样使用 QList::size_type?(模板参数错误)
- cudaFreeHost() 无效参数错误
- 精神语法不会编译:函数模板参数错误?
- C 功能具有参考参数错误的迭代器错误.寻求解释
- 使用getDefaultCommConfig使用无效的参数错误
- C++ 可变参数模板和模板模板参数:错误:模板参数列表中参数 1 处的类型/值不匹配
- 使用SWIG生成的Python库时,向量分配器参数错误
- 错误C2664:无法转换参数错误
- C 作为参数错误的功能
- 命令行参数错误
- 增强Python参数错误