2 emmadiana EmmaDiana 于 2016.04.13 11:10 提问

c语言程序编译出错error: syntax error before "typedef"

设计的一个顺序循环队列和测试函数,结果编译的时候就有好多error: syntax error before ""不知道要怎么改,求帮助~
这是我的代码:
头文件:
#include
typedef struct SeqCQueue
{
DataType queue[MaxQueueSize];
int MaxQueueSize;
int rear;
int front;
}struct SeqCQueue;
void QueueInitiate(SeqCQueue *Q)
{
Q->rear=0;
Q->front=0;
}
int QueueNotEmpty(SeqCQueueQ)
{
if(rear==front)
return 1;
else
return 0;
}
int QueueAppend(SeqCQueue*Q,DataType x)
{
if((rear+1)%MaxQueueSize==front)
{
printf("队列已满无法插入!\n");
return 0;
}
else
{
Q->queue[Q->rear]=x;
Q->rear=(Q->rear+1)%MaxQueueSize;
return 1;
}
}
int QueueDele(SeqCQueue*Q,DataType*d)
{
if(rear==front)
{
printf("队列已空,无数据元素出队列!\n");
return 0;
}
else
{
*d=Q->queue[Q->front];
Q->front=(Q->front+1)%MaxQueueSize;
return 1;
}
}
int QueueGet(SeqCQueue Q,DataType*d)
{
if(rear==front)
{
printf("队列已空,无数据元素可取!\n");
return 0;
}
else
{
*d=Q.queue[Q.front];
return 1;
}
}
测试函数:
#include
#include
typedef struct
#include"2.h"
int main(void)
{
typedef struct
{

int queue[MaxQueueSize];
int rear;
int front;

}SeqCQueue;
void QueueInitiate(SeqCQueue*Q)
int QueueNotEmpty(SeqCQueue*Q)
int i,x=1;
for(i=0;i<10;i++)
{
QueueAppend(SeqCQueue*Q,DataType x)
x++;
}
QueueGet(SeqCQueue Q,DataType*d)
printf("此队列队头元素为%d",*d);
for(i=0;i<10;i++)
{
QueueDele(SeqCQueue*Q,DataType*d)
printf("%d",*d);
free(d)
}
}

4个回答

CSDNXIAON
CSDNXIAON   2016.04.13 11:23

syntax error : missing ';' before '*
error C2143: syntax error : missing ';' before 'tag::id' 'BOOL' : redefinition; typedef cannot be ov
phpmyadmin建表出错 #1064 - You have an error in your SQL syntax;
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

EmmaDiana
EmmaDiana 我用的是C-free,编译结果一直都是什么之前有语法错误,一直找不出来。。。
2 年多之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.04.13 12:08

楼主重新发一下代码吧,把代码放在代码框里面发
typedef struct SeqCQueue
{
DataType queue[MaxQueueSize];
int MaxQueueSize;
int rear;
int front;
}struct SeqCQueue;
最好改成
typedef struct SeqCQueue
{
DataType queue[MaxQueueSize];
int MaxQueueSize;
int rear;
int front;
}SeqCQueue;

DataType又是啥?MaxQueueSize也看不到?

abcd_123457
abcd_123457   2016.04.13 15:06

多了一个语句#include,这句话后面没有包含头文件,所以报错了。

EmmaDiana
EmmaDiana   2016.04.13 15:52

头文件:
#include
typedef struct SeqCQueue
{
DataType queue[MaxQueueSize];
int MaxQueueSize;
int rear;
int front;
}struct SeqCQueue;
void QueueInitiate(SeqCQueue *Q)
{
Q->rear=0;
Q->front=0;
}
int QueueNotEmpty(SeqCQueueQ)
{
if(rear==front)
return 1;
else
return 0;
}
int QueueAppend(SeqCQueue*Q,DataType x)
{
if((rear+1)%MaxQueueSize==front)
{
printf("队列已满无法插入!\n");
return 0;
}
else
{
Q->queue[Q->rear]=x;
Q->rear=(Q->rear+1)%MaxQueueSize;
return 1;
}
}
int QueueDele(SeqCQueue*Q,DataType*d)
{
if(rear==front)
{
printf("队列已空,无数据元素出队列!\n");
return 0;
}
else
{
*d=Q->queue[Q->front];
Q->front=(Q->front+1)%MaxQueueSize;
return 1;
}
}
int QueueGet(SeqCQueue Q,DataType*d)
{
if(rear==front)
{
printf("队列已空,无数据元素可取!\n");
return 0;
}
else
{
*d=Q.queue[Q.front];
return 1;
}
}
测试函数:
#include
#include
typedef struct
#include"2.h"
int main(void)
{
typedef struct
{

int queue[MaxQueueSize];
int rear;
int front;

}SeqCQueue;
void QueueInitiate(SeqCQueue*Q)
int QueueNotEmpty(SeqCQueue*Q)
int i,x=1;
for(i=0;i<10;i++)
{
QueueAppend(SeqCQueue*Q,DataType x)
x++;
}
QueueGet(SeqCQueue Q,DataType*d)
printf("此队列队头元素为%d",*d);
for(i=0;i<10;i++)
{
QueueDele(SeqCQueue*Q,DataType*d)
printf("%d",*d);
free(d)
}
return 0;
}

@

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
winnt.h error C2146: syntax error : missing ';' before identifier 'PVOID64'
http://www.cnblogs.com/RunOnTheWay/archive/2008/01/17/1043705.html 上次开发DirectShow还是2005年1月,整整两年,今天又重操旧业。 这次在VS2005上使用DirectShow,首次编译发现出现以下错误: error C2146: syntax error : missing ';' before iden
C语言 error C2143: syntax error : missing ';' before 'type'
1.问题描述 问题展示如图所示:所有IDE为VS2010。 源代码展示:源代码是一个将华氏温度转换为摄氏温度的程序。 #include //void Fahr_Celsius() int main() { //int fahr, celsius; int lower, upper, step; lower = 0; upper = 300; step = 20; pr
关于C++程序编译出现error C2143: syntax error : missing ';' before 'type'的解决办法
C++ error C2143
winpcap 中出现c:\codes\include\pcap-stdinc.h(79) : error C2144: syn..错误时
本人使用vc++6.0编译时出现 c:\codes\include\pcap-stdinc.h(79) : error C2144: syntax error : missing ';' before type 'unsigned int' c:\codes\include\pcap-stdinc.h(79) : fatal error C1004: unexpected end of file
编译错误syntax error : missing ';' before 'type'原因探寻
 在VC6中运行以下代码//////////////////////////////////main.c#include int main(){ char a[100]; memset(&a, 0, 100); char b; return 0;}/////////////////////////////////编译器将会报一个编译错误,syntax error : missi
error C2143: syntax error : missing ';' before '*'
在VC编程过程中我们经常会遇到这样的错误提示信息error C2143: syntax error : missing ';' before '*',即在“*”号之前少了“;”。究竟是什么原因? 背景:当在MainFrame类中包含CView.h文件时会出现编译
弱智的问题:error C2143: syntax error : missing ';' before '<cv-qualifer>'
最近编了几个Qt的小程序,其中几个出现了error C2143: syntax error : missing ';' before ''这个错误,编写的时候也没注意检查,在网上苦苦寻找,也没怎么找到几个像样的说法,今天再把这几个小程序细细一看,发现声明类的时候忘记在类后面加分号了。。。傻逼了。。。        错误如下: 1>.\debug\moc_QtStudy.cpp(19) : er
最终解决error C2146: syntax error : missing ';' before identifier的问题
大家不用找分号了,头文件的问题,要不就是没包含windows.h,要不就是循环包含了某个头文件,要不改一下头文件的顺序就可以了。 做了个小程序,吃过了循环包含头文件的苦了
error C2143: syntax error : missing ';' before '<class-head>'
某个头文件中的函数或者结构体声明忘加分(';')号的原因,应该仔细检查。
error C2143: syntax error : missing ';' before 'type' in Visual C++
今天偶然写了下面的程序(原来我写的程序不一样,下面的只是为了把问题简化)void foo() { int p = 0; if ( p == 0 ) int i = 0; int a; } int main() { foo(); }   不幸的是偶然将这个文件保存成了test.c,然后编译的时候出现了error, error C2143: syntax error : missing ';' before 'type'感觉很奇怪,细