我用结构体指针:结构体定义如下
__packed typedef struct
{
u8 DeviceCaption;//?è±?????
u16 DeviceAddress;//?è±????·
u8 MainMenuNum;//?÷??????
u8 CmdWord[4];//?ü??×?
u8 DataCaptionSize;//×????????ó??
}ComFrameCaptionTypDef;//?¨???????ì???é????--?????é?·?????ó?®??×???
__packed typedef struct
{
u8 DataBuf[2];
u8 DefaultFlag;
}ComTestDataCapTypeDef;//?¨?????????é?????????¨??
__packed typedef struct
{
u8 DataBuf[4];
u8 DefaultFlag;
}RegCodeDataCapTypeDef;//×??á?????é?????????¨??
__packed typedef struct
{
u8 DataBuf[4];
u8 DefaultFlag;
}StaticDataCapTypeDef;//???????????é?????????¨??
__packed typedef struct
{
u8 DataBuf[4];
u8 DefaultFlag;
}ShineDataCapTypeDef;//???????????é?????????¨??
__packed typedef struct
{
u8 DataBuf[4];
u8 DefaultFlag;
}SleepDataCapTypeDef;//???????????é?????????¨??
__packed typedef struct
{
u8 DataBufStatic[6];//????????
u8 DataBufActive[24];//????????
u8 DefaultFlag;
}CycelDataCapTypeDef;//???·???????é?????????¨??
__packed typedef struct
{
u8 DataBuf[4];
u8 DefaultFlag;
}CurrentBreakDataCapTypeDef;//???÷???????????é?????????¨??
__packed typedef struct
{
u8 DataBuf[8];
u8 DefaultFlag;
}CommunicationErrorTypeDef;//?¨???í?ó?????¨??
__packed typedef struct
{
ComFrameCaptionTypDef* ComFrameIniStruct;
ComTestDataCapTypeDef* ComTestDataCapIniStruct;
RegCodeDataCapTypeDef* RegCodeDataCapIniStruct;
StaticDataCapTypeDef* StaticDataCapIniStruct;
ShineDataCapTypeDef* ShineDataCapIniStruct;
/*SleepDataCapTypeDef* SleepDataCapIniStruct;
CycelDataCapTypeDef* CycelDataCapIniStruct;
CurrentBreakDataCapTypeDef* CurrentBreakDataCapIniStruct;
CommunicationErrorTypeDef* CommunicationErrorTIniStruct;*/
}FrameProtocolTypeDef;//?ì?????á?????¨??
然后在主函数里定义一个结构体测试:FrameProtocolTypeDef FrameProInitSttuct;
FrameProInitSttuct.ComFrameIniStruct->DeviceCaption=20;
FrameProInitSttuct.StaticDataCapIniStruct->DefaultFlag=0;
经测试发现,在结构体中定义的结构体指针大于4个(上面紫色部分)的时候,程序就进入硬件错误中断。
难道是指针溢出??
求大侠解答!
|