首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-10 
关于enum的代码问题?不知道为什么编译不过?编译器为BC++3.1,错误提示行为打//******处在别的头文件中声明-

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

热点排行