DSP編程技巧之32---答疑解惑哪家強(qiáng)之(7)
答疑解惑哪家強(qiáng)?當(dāng)屬我們EEPW最強(qiáng)。。。接下來(lái)繼續(xù)我們的答疑解惑。這次我們主要來(lái)看一下與編譯器和鏈接器的常見(jiàn)錯(cuò)誤、警告有關(guān)的問(wèn)題原因和解決方法。
本文引用地址:http://m.butianyuan.cn/article/267640.htm40. 如何快速定位錯(cuò)誤信息?
在CCS V4及以上版本里,在編譯、鏈接之后有一些錯(cuò)誤和警告是包含有鏈接的,如下圖所示。
此時(shí)可以點(diǎn)擊帶下劃線(xiàn)的超鏈接,從而顯示出詳細(xì)的錯(cuò)誤信息,如下圖所示。
這個(gè)功能目前還沒(méi)有非常智能化,例如下面的錯(cuò)誤就沒(méi)有更詳細(xì)的提示信息。此時(shí)需要我們根據(jù)錯(cuò)誤描述去嘗試解決了。
上面的錯(cuò)誤解決起來(lái)也容易,它的意思是在鏈接器選項(xiàng)里使用了-l選項(xiàng)來(lái)引用庫(kù)文件,卻沒(méi)有提供給它庫(kù)文件的信息,所以就報(bào)錯(cuò)了。
41. Warning: function declared implicitly,如何解決?
這個(gè)警告是非常常見(jiàn)的,它表明在發(fā)生函數(shù)調(diào)用的時(shí)候,編譯器發(fā)現(xiàn)函數(shù)并沒(méi)有提前聲明。因?yàn)檫@只是個(gè)警告信息,所以編譯器會(huì)強(qiáng)迫自己來(lái)想象函數(shù)的參數(shù)和返回值,這樣雖然有可能可以通過(guò)編譯,結(jié)果卻是存在隱患的,它會(huì)導(dǎo)致程序在運(yùn)行時(shí)很難診斷運(yùn)行時(shí)錯(cuò)誤,甚至可能導(dǎo)致函數(shù)的輸出與設(shè)計(jì)的功能完全不相關(guān)。
然而你也可能會(huì)疑惑:一般大家都知道先聲明再使用的原則,函數(shù)我已經(jīng)在頭文件里定義了啊?此時(shí)的問(wèn)題是函數(shù)調(diào)用發(fā)生在頭文件引用之前了,只要把頭文件引用放在函數(shù)調(diào)用之前就能解決此問(wèn)題,通常把頭文件的引用放在調(diào)用這個(gè)函數(shù)的源程序的開(kāi)頭就好了。
42. Error: could not open source file "xxx.h",如何解決?
這個(gè)錯(cuò)誤有點(diǎn)灰色幽默的感覺(jué): 明明看到頭文件就在工程列表里,我們雙擊也能打開(kāi)它,編譯器卻就是死活不認(rèn)識(shí),還要報(bào)出什么致命性的錯(cuò)誤。
解決此錯(cuò)誤可以使用下面的步驟:
1. 檢查頭文件是否存在,并確認(rèn)其名字是否正確。
2. 經(jīng)檢查發(fā)現(xiàn)不存在上面的問(wèn)題,則此時(shí)需要手動(dòng)把頭文件的路徑指定給編譯器。在CCS工程管理器中右鍵點(diǎn)擊工程名,選擇屬性,并切換到頭文件對(duì)應(yīng)的選項(xiàng)卡,如下圖所示??梢渣c(diǎn)擊圖中的方框框出來(lái)的+鏡像添加,路徑則即可以使用相對(duì)路徑,也可以使用絕對(duì)路徑,使用相對(duì)路徑更容易方便工程的移動(dòng)。
注:上圖中的ProjName是編譯器中內(nèi)置的系統(tǒng)變量,我們可以很方便地使用它們來(lái)構(gòu)建頭文件、庫(kù)文件等的相對(duì)路徑,如下圖所示。
c++相關(guān)文章:c++教程
評(píng)論