c51編程編譯警告
A. c51編程警告*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
大哥。。。你的void main拼錯了。。。拼到了mian了。。。還有
提醒你一句,D1=0;後面最好加一句while(1);
養成良好習慣
B. keil c51編譯出現警告
1主函數(main)寫重復了。
2
地址空間溢出
C. 用keil編寫的 C51錯誤 *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: C_START
是試過了,KEil編譯通過,沒有問題,可能是你Keil設置的問題,
解決辦法:
1.是文件沒有添加到工程里。
2.可能是因為存在沒有被調用的已經定義的函數。
3.不知道你有沒有把Sourcegroup組下面的A51.C刪掉,如果沒有刪,在A51.c上點右鍵,選擇removefile"".
4.建一個新的c文件,裡面寫一個空的函數,把該文件添加到project中,注意該文件不能再選generateassemblerSRCfile和assembleSRCfile選項。重新編譯工程,如果警告該函數沒被調用,在主文件中調一下。
5.建一個新的c文件,把主文件中的幾個函數移至該文件,把該文件添加到project中,注意該文件不能再選generateassemblerSRCfile和assembleSRCfile選項。重新編譯工程。
其他:UNRESOLVEDEXTERNALSYMBOL說明連接的時候沒有找到外部變數
externxdataunsignedcharRxPnt;只是說明引用外部變數,並不是實際的聲明。
應該在某個.c文件里有xdataunsignedcharRxPnt才行。
extern中對這個變數做了聲明,說這個變數將會在這個文件中用到,但並沒有定義
也就是那個變數並沒有真實存在.
需要要某個地方定義一下,
也有可能是你定義了,但是被條件編譯給去掉了也有可能.具體查一下工程里的所有源文件看看
D. c51編譯過程中常見的警告有哪些
1.
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
在main函數裡面使用了某個變數,但沒有申明。或者申明了沒有實體。也就是說對於這個參數,編譯器無法解析
2.
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
頭文件定義時沒有加上ifndef
把gui.h文件按如下格式應該就沒問題了
//gui.h
#ifndef GUI_H_HFILE
#define GUI_H_HFILE 1
//此處放原來的頭文件內容
//
#endif
3.
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
有些已經定義的函數或者變數沒有使用。
這些是在編譯過程中較常見的,以後遇到了也會繼續補充。相互勉勵吧,加油
E. C51編譯警告warning C182: pointer to different objects
以前聽說過指向指針的指針,和二維數組的數組名是有區別的,不知道,只是不是同樣的原因。
F. keil c51 問題:程序無法編譯
你那程序也不長啊,直接把程序發上來,發什麼圖片哪?
第二個圖片顯示的,沒有錯誤了,只有一個警告,是因為調用那個延時子程序delay( ) 時,打錯了一個字母,打成dalay 了。
另外提示:保存C程序的文件夾,最好不 要用漢字,而且文件夾的層數不要太多了,你這一共是五層文件夾,有兩層還是漢字,編譯時容易出錯的。
G. C51編程,REFERENCE MADE TO UNRESOLVED EXTERNAL.
C51編譯警告「*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL」
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ?C_START
MODULE: .STARTUP.obj (?C_STARTUP)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: ?C_START
MODULE: .STARTUP.obj (?C_STARTUP)
ADDRESS: 000DH
問題原因:沒把C文件添加到項目中
解決方法:把新建的.c文件添加的項目文件中
c/c++語言中有很多地方要用到extern,但是如果沒有真正的了解它的意義,會給編程帶來很大的麻煩,為了使大家少走彎路,特祥細的說明一下。
對於比較小的程序,一般只有一個c文件和一個頭文件,全局變數我們通常會直接定義在c文件中,在程序之前加int i定義。如果要在頭文件中定義有以下兩種方法:用extern來聲明:extern int i;這一句只是對變數i進行聲明,在c文件的程序之前必須加上int i進行定義。extern int i=0;這一句聲明和定義都做了。
對於大一點的程序,有很多c文件和頭文件,這個時候全局變數就必須在頭文件中聲明,然後在一個c文件中定義。如果在頭文件中定義,則編譯的時候會出現重復定義的錯誤。如果只有頭文件中聲明就會出現沒有定義有警告。
這四個警告就是變數k在頭文件中有聲明,但是沒有定義,只需在某一個c文件的程序之前定義一下即可。
H. 51單片機匯編 警告 WARNING L5: CODE SPACE MEMORY OVERLAP 求解答
編譯沒有問題。
你的問題可能在於:工程中還有另一個文件,佔用了0000H開始的地址,如文件:STARTUP.A51
請在Add files to group...中刪除此類文件即可。