对DSP中unsigned long的发现以及对各种变量类型的总结
来源:互联网 发布:分布式更新数据 编辑:程序博客网 时间:2024/06/05 20:50
今天早上在调试DSP上的进程通信时,出现了一个比较怪诞的现象,我把原来一个DWORD,也就是unsigned int型的变量改成unsigned long以后,程序出错了,常识告诉我们,32位机器上long和int都是4个字节,DEBUG以后我发现,那个unsigned long变量居然占了8个字节,收方int型变量和发方long型变量,在字节数不同的情况下相减,结果出现了错误。我比较好奇,于是做了一个实验,将工程里添加了几个打印信息:
然后load到仿真器运行,打印的结果如下:
sizeof short is 2
sizeof int is 4
sizeof long is 8
sizeof unsigned long is 8
sizeof long long is 8
sizeof int is 4
sizeof long is 8
sizeof unsigned long is 8
sizeof long long is 8
所以得出的结论是:ti开发平台上,long和int是不一样的!切记切记啊!
再补充一点,在一个指针被申明为某一类型时,它在被强制转换后为一次性用品,下次使用还需再次强制转换,系统没有提供记忆功能,这样也好,免得转来转去,不知道转成什么类型了。如:
int ALM_Pack_Commands(char * buf)
CmdType= *(ICOMCmd *)buf;
ICOMCmd 为四个字节,但是如果将第三句话写成
CameraControlProtocol((IpcReport *)(buf + 1)));
就错了,因为buf虽然做过一次强制转换,但转换完后系统仍然认为buf为char *型。写为buf + 4可以的。所以以后要小心了。
0 0
- 对DSP中unsigned long的发现以及对各种变量类型的总结
- 嵌入式开发中对(*(volatile unsigned long *)) 的理解
- 嵌入式开发中对(*(volatile unsigned long *)) 的理解
- 对(*(volatile unsigned long *)) 的理解
- 对(*(volatile unsigned long *)) 的理解
- 转:对(*(volatile unsigned long *)) 的理解
- 对(*(volatile unsigned long *)) 的理解
- 对(*(volatile unsigned long *))的理解
- ARM学习随笔(6)volatile以及对(*(volatile unsigned long *))的理解
- 对#define GPBCON (*(volatile unsigned long*)0x56000010)的理解
- ORACLE中对LONG类型进行处理的方法
- ORACLE中对LONG类型进行处理的方法
- javascript中对变量类型的判断
- javascript中对变量类型的判断
- javascript中对变量类型的判断
- JS 中对变量类型的判断
- JS 中对变量类型的判断
- javascript中对变量类型的判断
- 获取网络地址
- Sql Server中用Print命令轻松调试【存储过程】的技巧或经验!
- Nignx日志统计分析
- fix协议介绍3-登出消息
- 简要介绍分布式服务器系统的内部结构
- 对DSP中unsigned long的发现以及对各种变量类型的总结
- EXT复合表头谷歌浏览器Chrome错位解决办法
- memcached实现分布式数据存储
- VS2012配置QT5环境
- Java中的集合
- 我要我们一直在一起
- 让UITableView响应touch事件
- Memcached 集群架构方面的问题
- matlab读取写入图像数据格式uint8,double