文章目錄
- c語言常見錯誤
- error LNK2019
- define_SeqList.h
- define_SeqList.c
- test.c
- define_SeqList.h(改)
- test.c(改)
c語言常見錯誤
error LNK2019
博主在用vs2013寫一些工程專案的時候,常常會出現這樣的錯誤,error LNK2019: 無法決議的外部符號 _SeqListPushBack,該符號在函式 _SeqListTest1 中被參考
為什么會常常發生這樣的錯誤呢?
一般博主我寫工程的時候,習慣把宣告函式,以及在測驗源檔案中把框架全部寫好,然后在進行一步步完善具體內容,以我的工程為例,define_SeqList.h、define_SeqList.c、test.c,代碼如下:
define_SeqList.h
#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define INIT_NUM 4
typedef int SLDataType,SLD;
typedef struct SeqList
{
SLDataType* array;
size_t size;
size_t capacity;
}SL,SeqList;
void SeqListInit(SL* ps);//初始化
void SeqListPushBack(SL* ps, SLDataType x);//表尾插
void SeqListPopBack(SL* ps);//表尾刪
void SeqListPushFront(SL* ps, SLDataType x);//表頭插
void SeqListPopFront(SL* ps);//表頭刪
void CheckCapacity(SL* ps);//容量檢查,不足則 兩倍增容
void SeqListInsert(SL* ps, int pos,SLDataType x);//中間插
void SeqListErase(SL* ps, int pos);//中間刪
void SeqListFind(SL* ps,int pos);//查表
void SeqListSort(SL* ps);//表排序,qsor回呼函式的復習
void SeqListPrint(SL* ps);//表列印
void SeqDestroy(SL* ps);//表銷毀,free
define_SeqList.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "define_SeqList.h"
void SeqListInit(SL* ps)
{
assert(ps);
ps->array = (SLDataType*)malloc(sizeof(SLDataType)*INIT_NUM);
if (ps->array == NULL)
{
perror("錯誤資訊");
}
ps->capacity = INIT_NUM;
ps->size = 0;
}
test.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "define_SeqList.h"
void SeqListTest1()
{
SL s;
//初始化
SeqListInit(&s);
//表尾插
SeqListPushBack(&s, 1);
SeqListPushBack(&s, 2);
SeqListPushBack(&s, 3);
SeqListPushBack(&s, 4);
SeqListPushBack(&s, 5);
SeqListPushBack(&s, 6);
SeqListPushBack(&s, 7);
//表尾刪
SeqListPopBack(&s);
SeqListPopBack(&s);
//表頭插
SeqListPushFront(&s, -1);
SeqListPushFront(&s, 0);
//表頭刪
SeqListPopFront(&s);
SeqListPopFront(&s);
//中間插
SeqListInsert(&s, 3, 8);
SeqListInsert(&s, 4, 9);
SeqListInsert(&s, 4, 15);
SeqListInsert(&s, 4, 9);
SeqListInsert(&s, 4, 9);
SeqListInsert(&s, 4, 16);
//中間刪
SeqListErase(&s, 3);
SeqListErase(&s, 3);
//查表
SeqListFind(&s, 4);
//表排序,qsor回呼函式的復習
SeqListSort(&s);
//表列印
SeqListPrint(&s);
//表銷毀
SeqDestroy(&s);
}
int main()
{
SeqListTest1();
return 0;
}

在上面的示例當中,我僅僅寫好了順序表的初始化,即void SeqListInit(SL* ps),但除錯的時候卻不能正常運行,這是因為你并沒有將其他宣告函式的具體內容所寫出來,這樣就會出現文章開頭的錯誤顯示:error LNK2019: 無法決議的外部符號 _SeqListPushBack,該符號在函式 _SeqListTest1 中被參考
那么該如何解決呢?具體的原理我暫時不是很清楚,但是有一個很好的解決辦法就是將define_SeqList.h檔案和test.c未寫出具體內容的函式注釋掉就可以進行除錯了,
例如:
define_SeqList.h(改)
#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define INIT_NUM 4
typedef int SLDataType,SLD;
typedef struct SeqList
{
SLDataType* array;
size_t size;
size_t capacity;
}SL,SeqList;
void SeqListInit(SL* ps);//初始化
//void SeqListPushBack(SL* ps, SLDataType x);//表尾插
//void SeqListPopBack(SL* ps);//表尾刪
//void SeqListPushFront(SL* ps, SLDataType x);//表頭插
//void SeqListPopFront(SL* ps);//表頭刪
//void CheckCapacity(SL* ps);//容量檢查,不足則 兩倍增容
//void SeqListInsert(SL* ps, int pos,SLDataType x);//中間插
//void SeqListErase(SL* ps, int pos);//中間刪
//void SeqListFind(SL* ps,int pos);//查表
//void SeqListSort(SL* ps);//表排序,qsor回呼函式的復習
//void SeqListPrint(SL* ps);//表列印
//void SeqDestroy(SL* ps);//表銷毀,free
test.c(改)
#define _CRT_SECURE_NO_WARNINGS 1
#include "define_SeqList.h"
void SeqListTest1()
{
SL s;
//初始化
SeqListInit(&s);
//表尾插
//SeqListPushBack(&s, 1);
//SeqListPushBack(&s, 2);
//SeqListPushBack(&s, 3);
//SeqListPushBack(&s, 4);
//SeqListPushBack(&s, 5);
//SeqListPushBack(&s, 6);
//SeqListPushBack(&s, 7);
表尾刪
//SeqListPopBack(&s);
//SeqListPopBack(&s);
表頭插
//SeqListPushFront(&s, -1);
//SeqListPushFront(&s, 0);
表頭刪
//SeqListPopFront(&s);
//SeqListPopFront(&s);
中間插
//SeqListInsert(&s, 3, 8);
//SeqListInsert(&s, 4, 9);
//SeqListInsert(&s, 4, 15);
//SeqListInsert(&s, 4, 9);
//SeqListInsert(&s, 4, 9);
//SeqListInsert(&s, 4, 16);
中間刪
//SeqListErase(&s, 3);
//SeqListErase(&s, 3);
查表
//SeqListFind(&s, 4);
表排序,qsor回呼函式的復習
//SeqListSort(&s);
表列印
//SeqListPrint(&s);
表銷毀
//SeqDestroy(&s);
}
int main()
{
SeqListTest1();
return 0;
}
博主盡量用言簡意賅的方法解決這樣的常見問題,如果懂具體原理的小伙伴,歡迎跟我討論哦~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/282403.html
標籤:其他
下一篇:資料結構-五種排序
