请教使用结构体变量作为参数时,结构体最大能定义多少变量?
如题:在使用结构体作为函数参数时,定义的结构体最大能定义多少个变量?是不是收到堆栈的限制?使用的单片机型号为:STC32G12K128。发现在超过1K的变量就会引起通讯的故障。
最大变量数量没有限制,但结构体大小有限制
使用Keil C251编译器,Memory Model推荐设置XSmall模式,默认定义变量在edata,单时钟存取访问速度快
edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量加xdata关键字定义到xdata空间
STC32G12K128的edata最大为4K
数据成员对齐规则:结构(struct)或联合(union)的数据成员,第一个数据成员放在offset为0的地方,每个数据成员存储的起始位置要从该成员(每个成员本身)大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)
结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储
结构体的总大小:也就是sizeof的结果,必须是其内部最大成员的整数倍(结构体成员以最大成员为代表),不足的要补齐
页:
[1]