首先我們要直到C++程序運行需要進行的四個階段。
預處理->編譯->匯編->鏈接
編譯:對語法語義分析,分析無誤生成匯編,頭文件不參加編譯,多個源文件是分開單獨編譯的。
鏈接:將多個obj文件鏈接合成一個,并處理沒有解決的地址問題。
如果我們模板聲明和定義分離會報一個鏈接的錯誤
在test.cpp中add(1,2)會調用add<int>,但是a.cpp中編譯器沒有看到對add<int>的調用,就不會實例化出一份代碼。
所以在鏈接時會去尋找被實例化的代碼,就會報鏈接的錯誤。
首先我們要直到C++程序運行需要進行的四個階段。
預處理->編譯->匯編->鏈接
編譯:對語法語義分析,分析無誤生成匯編,頭文件不參加編譯,多個源文件是分開單獨編譯的。
鏈接:將多個obj文件鏈接合成一個,并處理沒有解決的地址問題。
如果我們模板聲明和定義分離會報一個鏈接的錯誤
在test.cpp中add(1,2)會調用add<int>,但是a.cpp中編譯器沒有看到對add<int>的調用,就不會實例化出一份代碼。
所以在鏈接時會去尋找被實例化的代碼,就會報鏈接的錯誤。
本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。 如若轉載,請注明出處:http://www.pswp.cn/news/697740.shtml 繁體地址,請注明出處:http://hk.pswp.cn/news/697740.shtml 英文地址,請注明出處:http://en.pswp.cn/news/697740.shtml
如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!