求解为什么会报错expected ';', ',' or ')' before '{' token

为什么我把函数声明放在前面就会报错
用的是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;
这里少了后括号

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    该错误通常是由于在函数声明或定义中缺少分号而导致的。

    解决方法如下: 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(),然后定义了该函数,最后在主函数中调用该函数。函数声明和定义的顺序也可以交换。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^