读书人

关于enum的代码有关问题?不知道为什么

发布时间: 2012-04-10 21:03:56 作者: rapoo

关于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做为类型。

读书人网 >C语言

热点推荐