Part Number: AM3359
Tool/software: TI C/C++ Compiler
Compiler: TI v5.2.5
Payload_Manager.c:
struct __attribute__((__packed__))ATEIS_Payload //payload
{
u32 Addr;
u16 Cmd;
u16 Len;
u8 Data[]; // If the expression is a constant expression, it shall have a value greater than zero. 所以裡面不能填0
};
Payload_Manager.h:
typedef struct ATEIS_Payload ATEIS_Payload_s;
DNM_PktXcvr.c:
#include "Payload_Manager.h" ATEIS_Payload_s* pl_p = Payload_Manager_New(PAYLOAD_SIZE+dataLen); //incomplete type is not allowed
DNM_CmdHndlr.c:
#include "Payload_Manager.h"
ATEIS_Payload_s* pl_p = NULL; //no problem
pl_p = OSTaskQPend(0, OS_OPT_PEND_BLOCKING, &msgSize, &ts, &err); //wait for a message
DNM_temp = DNMManager_Ctor(DNM_temp,
&pl_p->Data[NAME], //pointer to incomplete class type is not allowed
pl_p->Addr, //ditto
*(u32*)&pl_p->Data[SN], //ditto
*(u32*)&pl_p->Data[SUBMASK]); //ditto
I deliberately hide struct member in source file and only give enough information via header file.
I don't know why this doesn't work.
Thanks