| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 862 人关注过本帖
标题:队列定义的语法问题
只看楼主 加入收藏
zhouyevisual
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-4-23
收藏
 问题点数:0 回复次数:3 
队列定义的语法问题
#include <stdio.h>
#include <malloc.h>
#define        MAXQSIZE        100;
#define        OK        1;
#define        ERROR        0;
typedef        int        QElemType;        
typedef        int        Status;
typedef struct{
    QElemType    *base;
    int front;
    int rear;
}SqQueue;//队列的定义
Status InitQueue(SqQueue &Q);//构造一个空队列
Status QueueLength(SqQueue Q);//计算队列的长度
Status EnQueue(SqQueue &Q,QElemType e);//插入一个元素
Status DeQueue(SqQueue &Q,QElemType &e);//删除一个元素
#include "queue.h"
Status InitQueue(SqQueue &Q)//构造一个空队列
{
    Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));
    if(!Q.base)return ERROR;
    Q.front=Q.rear=0;
    return OK;
};
Status QueueLenth(SqQueue Q)//计算队列的长度
{    int i;
    i=(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
    return i;
};
Status EnQueue(SqQueue &Q,QElemType e)//插入一个元素
{    int i;
    i=(Q.rear+1)%MAXQSIZE;
    if(i==Q.front) return ERROR;
    Q.base[Q.rear]=e;
    Q.rear=(Q.rear+1)%MAXQSIZE;
    return OK;
};
Status DeQueue(SqQueue &Q,QElemType &e)//删除一个元素
{
    if(Q.front==Q.rear) return ERROR;
    e=Q.base[Q.front];
    Q.front=(Q.front+1)%MAXQSIZE;
    return OK;
};

编译之后出现错误: <1>C:\Program Files\Microsoft Visual Studio\MyProjects\队列的定义\SqQueue.cpp(4) : error C2143: syntax error : missing ')' before ';'
                   <2>C:\Program Files\Microsoft Visual Studio\MyProjects\队列的定义\SqQueue.cpp(4) : error C2059: syntax error : ')'

不明白为什么会这样,我把宏定义删了后,在每个函数里定义int MAXQSIZE=100后,又没有语法错误了?这是为什么?是宏定义没有成功?
那位高手能告诉我,先谢谢了。。
搜索更多相关主题的帖子: 队列 语法 定义 
2008-04-23 22:37
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
宏定义不用分号

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-04-23 22:47
zhouyevisual
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-4-23
收藏
得分:0 
问题解决了,谢谢,不过为什么加了“;”后会这样呢?是系统把“MAXQSIZE;”作为标示符吗?
2008-04-23 22:51
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
对C++不了解
在C语言里,按说宏定义是不会报错的
预编译器只是用"100;"来替换MAXQSIZE
所以只是在引用的时候会报错,因为用加了分号的去做替换
语法会出问题

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-04-23 23:07
快速回复:队列定义的语法问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014441 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved