如果創建的項目中有多個文件時(尤其是編譯后的鏡像大小超過4K時),一定要在link order欄下調整文件順序,主要是前幾個文件的順序(2440init.s、2440slib.s、nand.c這三個文件一定要放在最前面),推薦的文件排列順序從上到下依次為2440init.s、2440slib.s、nand.c、2440lib.c、Main.c...。詳情請參考TQ2440開發板使用手冊5.3.1ADS1.2新建項目試驗小節(包括ADS項目的詳細配置過程)。順序不當,有可能導致編譯出的程序燒寫到Nand Flash中無法正常運行。
使用extern進行外部函數聲明(或外部變量聲明),使得不同文件可以調用同一工程中其他文件中定義的函數(變量)。也就是說本文件中沒有定義這個函數(變量),但是這個函數(或變量)在同一工程中其他文件中有定義,要想在本文件中使用該函數(變量)就需要在本文件中使用extern聲明此外部函數(或變量)。
為何要使用extern外部聲明呢?因為如果同一工程中的多個文件都要使用到同一函數(或變量),但是我們不能在需要使用該函數(或變量)的所有文件都定義該函數(或變量),如果這樣做的話,在程序鏈接時會出現“重復定義”的錯誤。正確的方法就是:在任一文件中定義外部函數(或變量),而在其他也需要該函數(或變量)的文件中使用extern對該函數(或變量)進行外部聲明。
聲明形式如下:
外部函數聲明:
外部變量聲明:
在函數名(或變量名)上右鍵:Go to function definition of XXX:(注意,需要在執行make后右鍵菜單才會出現此命令選項)
查看頭文件:(注意,也必須在執行make以后才可以)
在頭文件中使用條件編譯實現對開發板上同一設備不同型號之間進行選擇,其基本結構如下所示:
新聞熱點
疑難解答