Keil 報(bào)錯(cuò) ERROR 118:ERRONEOUS REFERENCE TO EXTERNAL VARIABLES
2022-09-16 01:04 作者:技術(shù)流阿宅 | 我要投稿

問題描述:
*** ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
? ? SYMBOL:? JUNK
? ? MODULE:? C:\MYCODE\J1.OBJ (J1)
? ? ADDRESS: 0020H
官網(wǎng)解釋鏈接:http://www.keil.com/support/docs/213.htm
答:
您的程序在技術(shù)上是正確的。問題在于 Keil C 編譯器創(chuàng)建的對象文件的對象模塊格式。
對象文件是根據(jù)英特爾指定的 OMF-51 對象模塊格式創(chuàng)建的。此對象模塊格式不允許使用小寫變量名稱。因此,所有公共變量都被視為大寫。當(dāng)您創(chuàng)建 2 個(gè)具有相同名稱但具有不同大小寫的公共符號(hào)時(shí),鏈接器會(huì)抱怨“錯(cuò)誤的外部”。
更改其中一個(gè)變量的名稱以避免此問題。
總結(jié)一下就是:為了遵循某個(gè)規(guī)則,規(guī)定所有的全局變量都視為大寫,所以除了大小寫都一樣的變量或函數(shù)(全局的)在一個(gè)工程中出現(xiàn)時(shí),就會(huì)發(fā)生這樣的錯(cuò)誤。
解決方法:
很簡單,報(bào)錯(cuò)提示的symbol就是命名有問題的變量或函數(shù),只要把相似變量/函數(shù)名中的一個(gè)改個(gè)名就可以了,而不是僅僅只有大小寫不一樣。
標(biāo)簽: