#define FM_TerMinal_Energy (FM_START)
#define FM_TerMinal_Energy_Len sizeof(stEnergy)
#define FM_STEP (FM_TerMinal_Energy+FM_TerMinal_Energy_Len+4)
#define FM_TerMinal_Demand (FM_STEP*2)
#define FM_TerMinal_Demand_Len sizeof(stDemand)
#define FM_TerMinal_ER(i) (FM_TerMinal_Demand+FM_TerMinal_Demand_Len+2+(sizeof(stEventRecord)+2)*i)
在32位操作系统中由于FM_TerMinal_ER中其中单个stEventRecord与前后两个不通的stEventRecord组成4字节。此时访问会内存越界。
#define FM_TerMinal_Energy (FM_START)
#define FM_TerMinal_Energy_Len sizeof(stEnergy)
#define FM_STEP (FM_TerMinal_Energy+FM_TerMinal_Energy_Len+4)
#define FM_TerMinal_Demand (FM_STEP*2)
#define FM_TerMinal_Demand_Len sizeof(stDemand)
#define FM_TerMinal_ER(i) (FM_TerMinal_Demand+FM_TerMinal_Demand_Len+4+(sizeof(stEventRecord)+4)*i)
只需在上述基础上略加改动,使得单个结构体stEventRecord自己填充完4个字节。