问题:在学习InstaSPIN – FOC 时发现, proj_lab01b
有的结构体
typedef struct _CTRL_Obj_
{
……
} CTRL_Obj;
typedef struct _CTRL_Obj_ *CTRL_Handle;这个是一样的,能够理解
但是有的结构体
typedef struct _DATALOG_OBJ_
{ int32_t *iptr[DATA_LOG_BUFF_NUM];
bool Flag_EnableLogData;
bool Flag_EnableLogOneShot;
int16_t cntr;
int16_t size;
} DATALOG_Obj;
typedef struct _DATALOG_Obj_ *DATALOG_Handle;
标红的不一样,但是编译能够通过,这个如何解释,而且_DATALOG_Obj_也搜索不到
luosf:如果自己编写结构体,肯定是第一种,编译才能通过
上面的问题导致一个问题
inline _iq CTRL_getVq_out_pu(CTRL_Handle handle)
{CTRL_Obj *obj = (CTRL_Obj *)handle;
return(obj->Vdq_out.value[1]);
}替换为return(handle->Vdq_out.value[1]);也是没有问题的,obj和handle都是结构体指针
但是
DATALOG_Handle DATALOG_init(void *pMemory,const size_t numBytes)
{DATALOG_Handle handle;
if(numBytes < sizeof(DATALOG_Obj))return((DATALOG_Handle)NULL);
// assign the handlehandle = (DATALOG_Handle)pMemory;
DATALOG_Obj *obj=(DATALOG_Obj *)handle;
obj->cntr = 0;obj->size = DATA_LOG_BUFF_SIZE;
return(handle);
} // end of DATALOG_init() function
这里的obj改为handle 编译就出错
问题:在学习InstaSPIN – FOC 时发现, proj_lab01b
有的结构体
typedef struct _CTRL_Obj_
{
……
} CTRL_Obj;
typedef struct _CTRL_Obj_ *CTRL_Handle;这个是一样的,能够理解
但是有的结构体
typedef struct _DATALOG_OBJ_
{ int32_t *iptr[DATA_LOG_BUFF_NUM];
bool Flag_EnableLogData;
bool Flag_EnableLogOneShot;
int16_t cntr;
int16_t size;
} DATALOG_Obj;
typedef struct _DATALOG_Obj_ *DATALOG_Handle;
标红的不一样,但是编译能够通过,这个如何解释,而且_DATALOG_Obj_也搜索不到
luosf:
回复 luosf:
说错了,与_无关