小编Num*_*our的帖子

NEON内在函数不断超出范围

我正在编译以下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);
}
Run Code Online (Sandbox Code Playgroud)

但我不断收到以下编译器错误:

/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` 
Run Code Online (Sandbox Code Playgroud)

第17行是最后一个}支撑foo().

有谁知道这个奇怪的错误可能是什么原因?

c arm compiler-errors neon android-ndk

6
推荐指数
1
解决办法
1042
查看次数

Eclipse中的C/C++方法参数提示

有没有什么方法可以让Eclipse显示C/C++函数参数的提示.当我按Ctrl + Shift + Space时,它只显示参数类型而不显示名称.并且,当按下时,Eclipse是否还可以自动显示参数提示?

谢谢你的建议.

c++ eclipse ide parameters

5
推荐指数
1
解决办法
3164
查看次数

确定是在Windows上还是在其他系统上进行编译

我目前正在开发一个跨平台的C应用程序.是否有任何编译器宏只在Windows上编译时定义,所以我可以在#ifdef某些特定于Windows的#includes?

典型的例子是在WinSock和Berkeley套接字头之间进行选择:

#ifdef _WINDOWS
   #include <winsock.h>    
#else
   #include <sys/socket.h>
   #include <netinet/in.h>
   #include <sys/un.h>
   #include <arpa/inet.h>
   #include <netdb.h>
#endif
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找的东西就像那个_WINDOWS宏.

c cross-platform platform-specific include c-preprocessor

5
推荐指数
1
解决办法
1493
查看次数

没有符号链接解析的绝对路径/将用户保留在主目录中

有没有办法在PHP中如何确定给定相对路径的绝对路径而不实际解析符号链接?像realpath功能但没有符号链接解析的东西.

或者,是否有一些简单的方法可以检查用户(使用我的浏览PHP脚本查看文件)是否不小心走出Apache虚拟主机的主目录?(或者不允许他使用令人讨厌的.和..在路径中)

谢谢!

php absolute-path directory-browsing

5
推荐指数
1
解决办法
2968
查看次数

重写没有分支的代码

我有以下功能:

uint16_t foo(uint8_t input)
{
     uint16_t N = 38;
     if (!(input&1))
     {
       N = 0;
     }
     else 
     {
        if ((input&2) >> 1)
        {
           N = ~N;
        }
     }
     return N;
}
Run Code Online (Sandbox Code Playgroud)

我想有它改写没有ifs,就像其将内联函数38到任意0,3865497给予input,并且仅使用标准C位变换操作.

关键不在于编译器可以内联函数,或者函数是快速的,而只是为了摆脱分支并且无论是什么都是恒定时间input.

第一个if很简单:

uint16_t c = ((input&1)^1)-1;
N &= c;
Run Code Online (Sandbox Code Playgroud)

但我找到一些简单的方法去做有条件的否定我遇到了麻烦.

c optimization bit-manipulation inline

3
推荐指数
1
解决办法
205
查看次数

在 MySQL 中连接两个相似的表

我有两个具有相似列的表 - 假设表 A 具有列 LABEL_A,表 B 具有列 LABEL_B。LABEL_A 和 LABEL_B 的数据类型相同。

如何在单个查询中从两个表中选择标签?(因此查询的结果包含单列 LABEL,其中包含来自两个表的 LABEL 列的数据)。

编辑:我可以在游标中使用此类 UNION 查询吗?

感谢您的回答。

mysql sql union

2
推荐指数
1
解决办法
2888
查看次数

C#中模板类型中的必需属性

考虑到通用方法,是否有可能在模板类型上设置约束以具有某些特定属性?

例如,为了成功编译以下代码

public static int[] DoSomething<T> (T[] Input)
{
   int[] Output = new int[Input.Length];

   for (int i = 0;i < Input.Length;i++)
      Output[i] = (int)Input[i].PropertyA+(int)Input[i].PropertyB;

   return Output;
}
Run Code Online (Sandbox Code Playgroud)

模板类型需要实现PropertyA和PropertyB.有可能以某种方式在模板类型上设置这样的约束吗?

编辑: 并且还要求PropertyA和PropertyB是数字类型,因此可以将它们键入int.

谢谢.

c# generics

2
推荐指数
1
解决办法
166
查看次数

MySQL使用GROUP BY和ORDER BY

我有一张人的表,每个人都有访问次数优先级:

ID | NAME          |  VISITS | PRIORITY
---------------------------------------
 1 |     John      |    1    |   0
 2 |     Joe       |    2    |   1
 3 |     Peter     |    1    |   1
 4 |     Sara      |    0    |   2  
 5 |     Phillip   |    5    |   0
 6 |     Bob       |    3    |   1
 7 |     Andrew    |    4    |   2
Run Code Online (Sandbox Code Playgroud)

只有某些允许的优先级:(0,1,2)

如何创建一个查询,根据访问次数(从最低位置开始)但在相应的优先级组内按人数排序?

所以结果应该是这样的:

ID | NAME          |  VISITS | PRIORITY
---------------------------------------
 1 |     John      |    1    |   0 …
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by sql-order-by

2
推荐指数
1
解决办法
215
查看次数

从ARM程序集中的过程返回

当创建ARM汇编函数,我通常推内容LR登记到r4-r5在beggining和功能完成后我弹出r4-r5PC:

.global myfunc
.type   myfunc, %function

myfunc:
push {r4-r5,lr}
... do stuff...
pop {r4-r5,pc}
Run Code Online (Sandbox Code Playgroud)

但是,我已经读过使用stmfdldmfd一个可能会获得更好的性能:

myfunc:
stmfd sp!,{r4-r11,lr}
...do stuff...
ldmfd sp!,{r4-r11,pc}
Run Code Online (Sandbox Code Playgroud)

到底是什么sp?我认为保存所有寄存器并不值得r4-r11,以防我实际上没有使用它们myfunc,对吧?那么push-pop变体在这种情况下会更好吗?

assembly arm

1
推荐指数
1
解决办法
1万
查看次数

存储指令中的数据对齐

在ARM程序集中,我有跨寄存器的数据r3 - r9.我想使用stm从我所在的地址开始的指令将它们存储回内存r0

指令stm r0,{r3-r9}会将寄存器中的数据放在彼此旁边.但我想要的是在存储的值之间有一个16字节的间隙,例如做类似的事情:

str r3,[r0]
str r4,[r0,#16]
str r5,[r0,#32]
str r6,[r0,#48] 
...
Run Code Online (Sandbox Code Playgroud)

这可能与stm指令有关还是有一些快捷方法?

assembly arm

1
推荐指数
1
解决办法
87
查看次数