编译报错,destroyList要先声明后使用,但是为什么initSqlist不报错

#include
#include
//定义一个三元数组

typedef struct Sqlist{
int * elem;//起始地址
int length;//初始长度
int listSize;//线性表容量
}Sqlist;

int main(int argc, char *argv[])
{
Sqlist q;

initSqlist(&q,10);
//destroyList(&q);
printf("%d\n",q.listSize);
system("PAUSE");

return 0;
}
/*
初始化一个线性列表
*list 是需要被初始化的列表引用
*size 是分配的空间大小
*/
int initSqlist(Sqlist
list,int size)
{
list->length = 0;
list->listSize = size;
list->elem = (int*) malloc(size*sizeof(int));

}
/*
释放malloc分配的内存空间
/
void destroyList(Sqlist
list)
{
free(list);
}