为什么我把函数声明放在前面就会报错
用的是Dev-C++
报错说 [Error] expected ';', ',' or ')' before '{' token
直接把函数定义放在前面就运行没问题QAQ
有人帮忙解决一下疑问吗(悲)
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define Maxsize 10
typedef struct
{
int* data;
int length;
int maxsize;
}SeqList;
void InitList(SeqList* L);
void DestroyList(SeqList* L;
int GetElem(SeqList L,int i);
int LocateElem(SeqList L,int e);
bool ListInsert(SeqList* L,int i,int e);
bool ListDelete(SeqList* L,int i,int* e);
void IncreaseSize(SeqList* L,int len);
bool Empty(SeqList L);
void PrintList(SeqList);
int Length(SeqList L);
int main()
{
return 0;
}
void InitList(SeqList* L)
{
L->data=(int*)malloc(sizeof(int)*Maxsize);
L->length=0;
L->maxsize=Maxsize;
}
void DestroyList(SeqList* L)
{
free(L->data);
L->data=NULL;
L->length=0;
L->maxsize=0;
}
int GetElem(SeqList L,int i)
{
if(i<1||i>L.length)
return 0;
return L.data[i-1];
}
int LocateElem(SeqList L,int e)
{
for(int i=0;i<L.length;i++)
{
if(L.data[i]==e)
return i+1;
}
return 0;
}
bool ListInsert(SeqList* L,int i,int e)
{
if(i<1||i<L->length+1)
return false;
if(L->length>=L->maxsize)
return false;
for(int j=L->length;j>=i;j--)
L->data[j]=L->data[j-1];
L->data[i-1]=e;
L->length++;
return true;
}
bool ListDelete(SeqList* L,int i,int* e)
{
if(i<1||i>L->length)
return false;
*e=L->data[i-1];
for(int j=i;j<L->length;j++)
L->data[j-1]=L->data[j];
L->length--;
return true;
}
void IncreaseSize(SeqList* L,int len)
{
int* p=L->data;
L->data=(int*)malloc(sizeof(int)*(len+L->maxsize));
for(int i=0;i<L->length;i++)
L->data[i]=p[i];
L->maxsize+=len;
free(p);
}
bool Empty(SeqList L)
{
return (L.length==0);
}
void PrintList(SeqList L)
{
for(int i=0;i<L.length;i++)
printf("L.data[%d]=%d\n",i,L.data[i]);
}
int Length(SeqList L)
{
return L.length;
}
void DestroyList(SeqList* L;
这里少了后括号
该错误通常是由于在函数声明或定义中缺少分号而导致的。
解决方法如下: 1. 确认在函数声明或定义的末尾有分号; 2. 确认在函数调用或其它语句中括号的数量是否匹配; 3. 检查函数的参数列表是否正确。
如果将函数声明放在前面,则编译器不知道如何处理该函数,因为它还没有看到该函数的定义。而将函数定义放在前面,则可以避免这样的问题。
代码示例:
#include <iostream>
using namespace std;
// 声明函数
void showInfo(int);
// 定义函数
void showInfo(int value)
{
cout << "The value is: " << value << endl;
}
int main()
{
int value = 5;
// 调用函数
showInfo(value);
return 0;
}
// 函数定义
void showInfo(int value)
{
cout << "The value is: " << value << endl;
}
以上代码中,先声明了函数showInfo(),然后定义了该函数,最后在主函数中调用该函数。函数声明和定义的顺序也可以交换。