如何解决此问题!请求帮助

head.h中代码如下

#include<stdio.h>
#include<stdlib.h>

#define MaxSize 20
typedef struct {
    int elem[MaxSize];
    int length;
} SqList;
void InitList(SqList*& L);
void InsertList(SqList*& L, int* a, int n);
void DestroyList(SqList*& L);
void DispList(SqList* L);
 int main()
{
    SqList* S1;
    InitList(S1);
    int a[5] = { 1,2,3,4,5 };
    InsertList(S1, a, 5);
    DispList(S1);
}

w.cpp中代码如下:

#include<stdio.h>
#include"head.h"
void InitList(SqList*& L) {//初始化SqList
    L = (SqList*)malloc(sizeof(SqList));
    L->length = 0;
}
void InsertList(SqList*& L, int* a, int n) //插入n个元素
{
    for (int i = 0; i < n; i++)
    {
        L->elem[i] = a[i];
        L->length++;
    }
}

void DestroyList(SqList*& L) //销毁SqList
{
    free(L);
}
void DispList(SqList* L) {//显示
    for (int i = 0; i < L->length; i++)
        printf("%d", L->elem[i]);
}

报错如下:

img

修改如下:

head.h中代码:

#include<stdio.h>
#include<stdlib.h>
 
#define MaxSize 20
typedef struct {
    int elem[MaxSize];
    int length;
} SqList;
void InitList(SqList*& L);
void InsertList(SqList*& L, int* a, int n);
void DestroyList(SqList*& L);
void DispList(SqList* L);

w.cpp中代码:

#include<stdio.h>
#include"head.h"
void InitList(SqList*& L) {//初始化SqList
    L = (SqList*)malloc(sizeof(SqList));
    if (L != NULL) {
        L->length = 0;
    } 
}
void InsertList(SqList*& L, int* a, int n) //插入n个元素
{
    for (int i = 0; i < n; i++)
    {
        L->elem[i] = a[i];
        L->length++;
    }
}
 
void DestroyList(SqList*& L) //销毁SqList
{
    free(L);
}
void DispList(SqList* L) {//显示
    for (int i = 0; i < L->length; i++)
        printf("%d", L->elem[i]);
}
 int main()
{
    SqList* S1;
    InitList(S1);
    int a[5] = { 1,2,3,4,5 };
    InsertList(S1, a, 5);
    DispList(S1);
}

为什么把main写在 head.h 里面

.h 文件 和 .cpp 文件没配置好,main() 函数怎好放在 .h 文件里。
这么改,供参考:

//sqlist.h

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 20
typedef struct {
    int elem[MaxSize];
    int length;
} SqList;
void InitList(SqList*& L);
void InsertList(SqList*& L, int* a, int n);
void DestroyList(SqList*& L);
void DispList(SqList* L);



//sqlist_fun.cpp

#include"sqlist.h"
void InitList(SqList*& L) {//初始化SqList
    L = (SqList*)malloc(sizeof(SqList));
    L->length = 0;
}
void InsertList(SqList*& L, int* a, int n) //插入n个元素
{
    for (int i = 0; i < n; i++)
    {
        L->elem[i] = a[i];
        L->length++;
    }
}
void DestroyList(SqList*& L) //销毁SqList
{
    free(L);
}
void DispList(SqList* L) {//显示
    for (int i = 0; i < L->length; i++)
        printf("%d", L->elem[i]);
}

// mainf.cpp
#include"sqlist.h"
int main()
{
    SqList* S1;
    InitList(S1);
    int a[5] = { 1,2,3,4,5 };
    InsertList(S1, a, 5);
    DispList(S1);
}