关于enum的代码问题?不知道为什么编译不过?
编译器为BC++3.1, 错误提示行为打//******处
在别的头文件中声明
-----------------------------
enum CMD // 任务枚举
{
CMD_NOP,CMD_RDMTR, CMD_YX, CMD_YK, CMD_HB, CMD_TASK,CMD_EXIT
};
-----------------------------
所写的头文件
-----------------------------
#ifndef TKTASK_H
#define TKTASK_H
struct g_CListTick
{
uint32 beginTi; // 开始时间
uint32 setTi; // 定时的时间间隔
CMD taskId; // 任务ID
struct g_CListTick *next; // 下一个节点
};
// 定时任务初始化
extern int16 TickTaskInit( void );
// 设置定时任务
extern int16 CreateTickTask( CMD taskid, uint32 ti );
// 时钟中断中的任务触发
extern void IsrSpring( void );
#endif
-----------------------------
C代码文件
-----------------------------
#include "config.h "
static struct g_CListTick *pHead;
static struct g_CListTick *pLast;
// 定时任务初始化
int16 TickTaskInit( void )
{
pHead = NULL;
pLast = NULL;
return 0;
}
// 设置定时任务
int16 CreateTickTask( CMD taskid, uint32 ti )
{
struct g_CListTick *pTmp;
struct time nowTi;
uint32 sec;
pTmp = ( struct g_CListTick * )malloc( sizeof( struct g_CListTick ) );
if( pTmp == NULL )
{
return -1;
}
if( pHead == NULL )
{
pHead = pTmp;
}
gettime( &nowTi );
sec = TmToSec( &nowTi );
pTmp-> beginTi = sec; // 开始时间
pTmp-> setTi = ti; // 定时的时间间隔
pTmp-> taskId = taskid; // 任务ID
pTmp-> next = NULL;
if( pLast == NULL )
{
pLast = pTmp;
}
else
{
pLast-> next = pTmp;
pLast = pTmp;
}
return 0;
}
// 时钟中断中的任务触发
void IsrSpring( void )
{
struct g_CListTick *pTmp;
struct time nowTi;
CMD taskIdTmp;
uint32 sec;
if( pHead != NULL )
{
pTmp = pHead;
gettime( &nowTi );
sec = TmToSec( &nowTi );
while( pTmp != NULL );
{
if( ( sec - pTmp-> beginTi ) > = pTmp-> setTi )
{
pTmp-> beginTi = sec;
CmdQueue.ISR_PushCmd( pTmp-> taskId ); //******
pTmp = pTmp-> next;
}
}
}
}
-----------------------------
CmdQueue.ISR_PushCmd的原型为
int ISR_PushCmd(CMD NewCmd,char*pPar=NULL);
请问该错误应该如何解决? 这个enum的转化问题真是头痛.
[解决办法]
啥错误啊?
[解决办法]
CmdQueue.ISR_PushCmd(CMD, char *)
这个方法是public的吗?
[解决办法]
enum CMD // 任务枚举
{
CMD_NOP,CMD_RDMTR, CMD_YX, CMD_YK, CMD_HB, CMD_TASK,CMD_EXIT
};
===============
enum // 任务枚举
{
CMD_NOP,CMD_RDMTR, CMD_YX, CMD_YK, CMD_HB, CMD_TASK,CMD_EXIT
}CMD;
OR
typedef enum // 任务枚举
{
CMD_NOP,CMD_RDMTR, CMD_YX, CMD_YK, CMD_HB, CMD_TASK,CMD_EXIT
}CMD_T;
CMD_T CMD;
[解决办法]
帮顶
[解决办法]
用的时候需要写enum CMD,因为你没用typedef,所以不能直接用CMD做为类型。