这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ADS1 ADS1.2中结构体问题请教!!!

共2条 1/1 1 跳转至

ADS1 ADS1.2中结构体问题请教!!!

院士
2006-09-17 18:14:16     打赏
ADS1 ADS1.2中结构体问题请教!!!



关键词: ADS1.2     结构     问题     请教    

院士
2006-12-22 22:43:00     打赏
2楼
问 我定义了一个结构体:
typedef struct tagLCFrameType
{
    uint8  head1;        
    uint32 addr;        
    uint16 area;        
    uint8  head2;        
    uint8  control;        
    uint8  datalen;        
    uint8  data[1];        
}LCFrameType;
在给结构体元素赋值时,在变量窗口中看到的值是正确的,但在Memory中第一个结构体元素
后面空了三个字节 68 00 00 00 78 56 34 12,这是为什么?我再复制此结构体到其它地方
时,也有同样的多余的三个字节,为什么???
如果第二个元素改为int16型时,那么就会只有一个 00 ,这到底是为什么???
请高手指点!!! 急!!!
在ADS中有没有相关设置??? 1: 如果你要编译器将它们紧凑存储,可以使用关键词__packed修饰。紧凑存储将影响程序执行速度。 2: 它多出三个字节有什么要紧的? 3: 把uint8拼拼齐归归类,可以省点内存 4: 请zlgARM举一个_packed的例子 5: 内存对齐产生的问题.我定义了一个结构体:
typedef struct tagLCFrameType
{
    uint8  head1;                
    uint8  head2;        
    uint8  control;        
    uint8  datalen;        
    uint8  data[1];          
    uint16 area;    
    uint32 addr;  
}LCFrameType;

再试试看,最好从小到大定义. 6: 参看ADS_CompilerGuide.pdf文档(P69)有示例。 7: 我的做法我定义了一个结构体:
typedef struct tagLCFrameType
{
    uint8  head1;                
    uint8  head2;        
    uint8  control;        
    uint8  datalen;        
    uint8  data[1];
    uint8  space;         //这个作为备用,那么就能清楚的知道结构体占用字节数    
    uint16 area;    
    uint32 addr;  
}LCFrameType;

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]