一个因xdata声明引起的隐含错误
2017-07-07 11:33
211 查看
我们知道一般增强型c51自身的RAM只有128BYTES,根本不够用,所以一般在定义全局变量,静态变量时都要用XDATA作为关键字修饰数据的的存储类型。但要注意的是,定义和声明一定要一致,不然出现错误很隐蔽,很难发现这个问题。拿我一个项目中的从外部SPI FLASH接口读出数据的教训来举例:
测试发现如果传递一个结构体变量的地址(或指针)就能得到结果,而实际的接收BUFF是一个结构体数组,不管我一什么方式引用其某个元素的首地址就是得不到结果,一直在纠结结构体数组和结构体变量调用的区别的泥淖里出不来。后来发现根本就不是这个事儿,根本原因是因为声明的时候少了关键字XDATA出现一直监控不到读出的数据。
测试发现如果传递一个结构体变量的地址(或指针)就能得到结果,而实际的接收BUFF是一个结构体数组,不管我一什么方式引用其某个元素的首地址就是得不到结果,一直在纠结结构体数组和结构体变量调用的区别的泥淖里出不来。后来发现根本就不是这个事儿,根本原因是因为声明的时候少了关键字XDATA出现一直监控不到读出的数据。
相关文章推荐
- IE6中javascript数组声明语法错误引起的一个问题
- 一个小配置错误引起的大问题
- 一个精典asp程序引发的错误引起的思考
- 一个后缀名引起的惨案--记用Openjtag烧写supervivi到NorFlash的一个错误
- 一个通配符引起的错误
- 一个逗号引起的JS错误
- 一个stmt多个rs进行操作引起的ResultSet已经关闭错误
- 解决方案:静态成员对象的声明在头文件中,函数代码在另外一个文件中,提示链接错误
- 一个由于数据库并发引起的错误,开发环境里一切都正常、运行环境里不稳定、发生莫名奇妙的错误
- VC lib 设置引起的一个链接错误
- C/C++一个容易犯的低级错误--分号引起的错误
- 一个stmt多个rs进行操作引起的ResultSet已经关闭错误
- 一个由于数据库并发引起的错误,开发环境里一切都正常、运行环境里不稳定、发生莫名奇妙的错误
- 一个由于数据库并发引起的错误,开发环境里一切都正常、运行环境里不稳定、发生莫名奇妙的错误
- 一个由于数据库并发引起的错误,开发环境里一切都正常、运行环境里不稳定、发生莫名奇妙的错误
- 一个因为顺序问题引起的错误!
- 一个stmt多个rs进行操作引起的ResultSet错误
- 一个Hibernate中映射文件里设置引起的错误[续]
- 一个粗心引起的诡异错误
- 前向声明和其引起的错误提示