為什麼模板不支援分離編譯

2021-08-09 21:53:12 字數 439 閱讀 6973

在c++中,為了乙個專案的規範,我們為您通常把**歸為三類:

1、宣告檔案

2、實現檔案

3、測試檔案

比如我們要用c++實現乙個鍊錶,那麼我們就會建立這3個檔案:

linklist.h     //鍊錶的相關宣告

lisklist.cpp   //鍊錶的實現**

test.cpp        //鍊錶測試**

如果一旦,我們要通過類模板來實現鍊錶(仍然用以上檔案),編譯器就會報錯:無法解析外部符號。

我們先簡單來分析一下,編譯器報的這種錯誤屬於鏈結性錯誤,也就是當程式預處理、編譯、彙編、鏈結,在鏈結時出現了錯誤。

解決方法:

1、在模板標頭檔案***.h中進行顯示例項化,在模板類定義後面直接新增template class seqlist;

2、將定義與宣告放到乙個檔案***.hpp裡

為什麼模板不支援分離編譯?

在c 中,為了乙個專案的規範化我們通常把 歸類為三類 宣告檔案 實現檔案 測試檔案。比如,我們要實現乙個順序表,那麼規範化就是建立3個檔案 seqlist.h 順序表相關宣告 seqlist.cpp 順序表相關實現 test.cpp 順序表測試檔案 那麼普通順序表這樣寫一點問題都沒有,用模板實現成這...

為什麼模板不支援分離編譯

在c 中,為了乙個專案的規範,我們通常把 歸為三類 宣告檔案 實現檔案 測試檔案.比如,我要用c 實現乙個鍊錶,那麼就會建立這3個檔案 linklist.h 鍊錶的相關宣告 linklist.cpp 鍊錶的實現 test.cpp 鍊錶測試 本文忽略 那麼問題來了,普通鍊錶這樣寫起來一點問題都沒有 如...

為什麼模板不支援分離編譯?

在c 中模板是不支援分離編譯的。在解釋這個問題之前,我們先來看看一段程式在編譯時要經歷哪些過程。1 預處理階段 生成 字尾為.i的檔案 進行巨集替換,展開標頭檔案,去掉注釋 2 編譯階段 生成 字尾為.s的檔案 檢查語法,生成彙編 3 彙編階段 生成 字尾為.o的檔案 將組合語言轉化為二進位制機器碼...