【发布时间】:2013-02-25 05:22:15
【问题描述】:
我正在编译以下 ARM NEON 内在测试代码(在带有 Android NDK 的 Eclipse 中):
void foo(uint64_t* Res)
{
uint64_t x = 0xff12aa8902acf78dULL;
uint64x1_t a,b;
a = vld1_u64 (&x);
b = vext_u64 (a, a, 3);
vst1_u64 (Res,b);
}
但我不断收到以下编译器错误:
/home/developer/adt/ndk/ndk-build all
Install : libneon_test.so => libs/armeabi/libneon_test.so
Compile thumb : neon_test <= neon.c
jni/neon.c: In function 'foo':
jni/neon.c:17:1: error: constant out of range
make: *** [obj/local/armeabi-v7a/objs/neon_test/neon.o] Error 1`
第 17 行是 foo() 的最后一个 } 大括号。
有谁知道这个奇怪错误的原因可能是什么?
【问题讨论】:
-
它在说什么常数?您发布的代码的第 17 行是 } 大括号。是值 3 吗?
-
这就是问题所在,我也不知道。编译器总是将此错误指向最后一个 } 大括号,这是没有意义的。我认为这可能是 NEON 的 GCC 错误,所以我可能正在寻找一些解决方法。
-
我认为 ThePosey 删除的答案是正确的。你期待
vext_u64(a, a, 3)做什么?
标签: c compiler-errors android-ndk arm neon