C/C++
tuolaji1989
这个作者很懒,什么都没留下…
展开
-
用C语言实现 函数重载
#include #include #include void va_overload2(int p1, int p2){ printf("va_overload2 %d %d\n", p1, p2);}void va_overload3(int p1, int p2, int p3){ printf("va_overload3 %d %d %d\n", p1, p2, p3翻译 2012-09-01 10:35:52 · 3256 阅读 · 0 评论 -
float 数据转换成 二进制
也没有写博客的习惯,最近工作比较忙,今天周五,终于有点时间,写点心得, 今天上午碰到一个问题 实现opencl 的内建函数:bitselect, 需要对float类型的bit位进行处理。以下是通过联合体吧 float 转换成二进制的形势:union trans{float f;char c[4];};union trans test;test原创 2012-11-16 23:39:53 · 1946 阅读 · 0 评论 -
两个64位整数相乘 取高64位的值
#define CL_LONG_MIN ((long long) -0x7FFFFFFFFFFFFFFFLL - 1LL)#define CL_LONG_MAX ((long long) 0x7FFFFFFFFFFFFFFFLL)#define CL_ULONG_MAX ((ulong) 0xFFFFFFFFFFFFFFFFULL)void multiply_unsigne原创 2012-11-20 23:52:19 · 1474 阅读 · 0 评论 -
gcc 修改 Eflags 寄存器
int main(){__asm__("lahf");__asm__("or $0x10, %ah"); //设置AF标志__asm__("sahf“);return 0;}原创 2013-02-26 22:32:22 · 619 阅读 · 0 评论 -
树莓派(ARM处理器), 符号位扩展的问题
最近在树莓派上做开发, 遇到了一个奇怪的问题for example:char a = 0x8f;printf("%d", a);我们希望得到 -113, 但是在树莓派上面得到的却是 143这是怎么回事? 怎么不按照符号位进行扩展?后来我查了下资料如下:ANSI C 提供了3种字符类型,分别是char、signed char、unsigned char原创 2013-05-21 08:46:22 · 1830 阅读 · 1 评论 -
关于arm-linux-gcc 规定 char 为 unsigned char 问题 的解决办法
vc编译器、x86上的gcc 都把char 定义为signed char;而arm-linux-gcc 却把char 定义为unsigned char 所以造成了 同样的代码在PC 和 ARM 设备上执行的结果不一样。解决这个问题的办法很简单。使用 -fsigned-char 参数 这样 char 就是 signed char 了原创 2013-05-23 16:40:22 · 3491 阅读 · 1 评论 -
test
int y = 0;void test(int *ret_result, int *_t) { int t = *(_t); { *ret_result = t; return ; };}void getValue() { int test_146_0 = 3; int test_146; test(&test_146, &(test_146_0)); int test_156_0 = 2; in原创 2014-08-25 15:20:48 · 411 阅读 · 0 评论