日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]今天寫把自己的一個(gè)程序改成多文件后出現(xiàn)了下面的一個(gè)報(bào)警:not in formal parameter list找了半天也沒有解決問題,后來在網(wǎng)上找到別人解決同樣問題的方法.他是頭文件一個(gè)函數(shù)聲明時(shí)落了個(gè)分號造成的,我立刻檢查自己的

今天寫把自己的一個(gè)程序改成多文件后出現(xiàn)了下面的一個(gè)報(bào)警:not in formal parameter list
找了半天也沒有解決問題,后來在網(wǎng)上找到別人解決同樣問題的方法.他是頭文件一個(gè)函數(shù)聲明時(shí)落了個(gè)分號造成的,我立刻檢查自己的程序,發(fā)現(xiàn)同樣少了一個(gè)分號.分號添上后編譯鏈接通過.
下面是我轉(zhuǎn)載的別人解決問題的文章:
error C132 :“****”not in formal parameter list
花了偶將近半個(gè)小時(shí)來查找錯(cuò)誤,最終發(fā)現(xiàn)原來是在頭文件里的一個(gè)函數(shù)聲明時(shí)露了一個(gè)分號造成緊挨著在它下面聲明的參數(shù)not in formal parameter list。記在在這里,免得以后忘記了,同時(shí)也供大家分享。錯(cuò)誤代碼如下:
之前我在函數(shù)聲明出列出函數(shù)聲明如下:
void Display_Normal();
void Display_Reset()
void Display_Year();
void Display_Month();
void Display_Day();
void Display_Week();
void Display_Hour();
void Display_Minute();
void Display_Second();

下面是另外一些常見的錯(cuò)誤提示 :
1.第一種錯(cuò)誤信息
***WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_WRITE_GMVLX1_REG?D_GMVLX1 CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP
***WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?_SPI_SEND_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP
***WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP ­
該警告表示連接器發(fā)現(xiàn)有一個(gè)函數(shù)可能會被主函數(shù)和一個(gè)中斷服務(wù)程序(或者調(diào)用中斷服務(wù)程序的函數(shù))同時(shí)調(diào)用, 或者同時(shí)被多個(gè)中斷服務(wù)程序調(diào)用。
出現(xiàn)這種問題的原因之一是這個(gè)函數(shù)是不可重入性函數(shù),當(dāng)該函數(shù)運(yùn)行時(shí)它可能會被一個(gè)中斷打斷,從而使得結(jié)果發(fā)生變化 并可能會引起一些變量形式的沖突(即引起函數(shù)內(nèi)一些數(shù)據(jù)的丟失,可重入性函數(shù)在任何時(shí)候都可以被ISR打斷,一段時(shí)間后又可以 運(yùn)行,但是相應(yīng)數(shù)據(jù)不會丟失)。 原因之二是用于局部變量和變量(暫且這樣翻譯,arguments,[自變量,變元一數(shù)值,用于確定程序或子程序的值])的內(nèi)存區(qū)被其他函數(shù)的內(nèi)存區(qū)所覆蓋,如果該函數(shù)被中斷,則它的內(nèi)存區(qū)就會 被使用,這將導(dǎo)致其他函數(shù)的內(nèi)存沖突。 例如,第一個(gè)警告中函數(shù)WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51被定義,它被一個(gè)中斷服務(wù)程序或者一個(gè)調(diào)用了中斷 服務(wù)程序的函數(shù)調(diào)用了,調(diào)用它的函數(shù)是VSYNC_INTERRUPT,在MAIN.C中。 解決方法: 如果你確定兩個(gè)函數(shù)決不會在同一時(shí)間執(zhí)行(該函數(shù)被主程序調(diào)用并且中斷被禁止),并且該函數(shù)不占用內(nèi)存(假設(shè)只使用寄存器), 則你可以完全忽略這種警告。 如果該函數(shù)占用了內(nèi)存,則應(yīng)該使用連接器(linker)OVERLAY指令將函數(shù)從覆蓋分析(overlay analysis)中除去,例如: OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *)
上面的指令防止了該函數(shù)使用的內(nèi)存區(qū)被其他函數(shù)覆蓋。如果該函數(shù)中調(diào)用了其他函數(shù),而這些被調(diào)用在程序中其他地方也被調(diào)用, 你可能會需要也將這些函數(shù)排除在覆蓋分析(overlay analysis)之外。這種OVERLAY指令能使編譯器除去上述警告信息。 如果函數(shù)可以在其執(zhí)行時(shí)被調(diào)用,則情況會變得更復(fù)雜一些。
這時(shí)可以采用以下幾種方法:
A.主程序調(diào)用該函數(shù)時(shí)禁止中斷,可以在該函數(shù)被調(diào)用時(shí)用#pragma disable語句來實(shí)現(xiàn)禁止中斷的目的。必須使用OVERLAY指令將該函數(shù) 從覆蓋分析中除去。
B.復(fù)制兩份該函數(shù)的代碼,一份到主程序中,另一份復(fù)制到中斷服務(wù)程序中。
C.將該函數(shù)設(shè)為重入型。例如: void myfunc(void) reentrant { ... } 這種設(shè)置將會產(chǎn)生一個(gè)可重入堆棧,該堆棧被被用于存儲函數(shù)值和局部變量,用這種方法時(shí)重入堆棧必須在STARTUP.A51文件中配置。 這種方法消耗更多的RAM并會降低重入函數(shù)的執(zhí)行速度。

2.第二種錯(cuò)誤信息 *** WARNING L16:UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS ­SEGMENT: ?PR?_COMPARE?TESTLCD 說明:程序中有些函數(shù)(或片段)以前(調(diào)試過程中)從未被調(diào)用過,或者根本沒有調(diào)用它的語句。 這條警告信息前應(yīng)該還有一條信息指示出是哪個(gè)函數(shù)導(dǎo)致了這一問題。只要做點(diǎn)簡單的調(diào)整就可以。不理它也沒什么大不了的。 解決方法:去掉COMPARE()函數(shù)或利用條件編譯#if …..#endif,可保留該函數(shù)并不編譯。

3. Warning 280:’i’:unreferenced local variable
說明局部變量i 在函數(shù)中未作任何的存取操作
解決方法消除函數(shù)中i 變量的宣告

4 Warning 206:’Music3’:missing function-prototype
說明Music3( )函數(shù)未作宣告或未作外部宣告所以無法給其他函數(shù)調(diào)用
解決方法將敘述void Music3(void)寫在程序的最前端作宣告如果是其他文件的函數(shù)
則要寫成extern void Music3(void),即作外部宣告

5 Compling :C:8051MANN.C
Error:318:can’t open file ‘beep.h’
說明在編譯C:8051MANN.C 程序過程中由于main.c 用了指令#include “beep.h”,但
卻找不到所致
解決方法編寫一個(gè)beep.h 的包含檔并存入到c:8051 的工作目錄中

6 Compling:C:8051LED.C
Error 237:’LedOn’:function already has a body
說明LedOn( )函數(shù)名稱重復(fù)定義即有兩個(gè)以上一樣的函數(shù)名稱
解決方法修正其中的一個(gè)函數(shù)名稱使得函數(shù)名稱都是獨(dú)立的

7 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_DELAYX1MS?DELAY
說明DelayX1ms( )函數(shù)未被其它函數(shù)調(diào)用也會占用程序記憶體空間
解決方法去掉DelayX1ms( )函數(shù)或利用條件編譯#if …..#endif,可保留該函數(shù)并不編

8 ***WARNING 6 :XDATA SPACE MEMORY OVERLAP
FROM : 0025H
TO: 0025H
說明外部資料ROM 的0025H 重復(fù)定義地址
解決方法外部資料ROM 的定義如下
Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC 變量的名稱為0x25,請檢查是否有其它的變量名稱也是定義在0x25 處并修正它

9 WARNING 206:’DelayX1ms’: missing function-prototype
C:8051INPUT.C
Error 267 :’DelayX1ms ‘:requires ANSI-style prototype C:8051INPUT.C
說明程序中有調(diào)用DelayX1ms 函數(shù)但該函數(shù)沒定義即未編寫程序內(nèi)容或函數(shù)
已定義但未作宣告
解決方法編寫DelayX1ms 的內(nèi)容編寫完后也要作宣告或作外部宣告可在delay.h
的包含檔宣告成外部以便其它函數(shù)調(diào)用

10 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL:MUSIC3
MODULE:C:8051MUSIC.OBJ(MUSIC)
***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:MUSIC3
MODULE:C:8051MUSIC.OBJ(MUSIC)
ADDRESS:0018H
說明程序中有調(diào)用MUSIC 函數(shù)但未將該函數(shù)的含擴(kuò)檔C 加入到工程檔
Prj 作編譯和連接
解決方法設(shè)MUSIC3 函數(shù)在MUSIC C 里將MUSIC C 添加到工程文件中去

11 ***ERROR 107:ADDESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: _DATA_GOUP_
LENGTH: 0018H
***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
SYMBOL: VOLUME
MODULE: C:8051OSDM.OBJ (OSDM)
ADDRESS: 4036H
說明data 存儲空間的地址范圍為0~0x7f,當(dāng)公用變量數(shù)目和函數(shù)里的局部變量如果存
儲模式設(shè)為SMALL 則局部變量先使用工作寄存器R2~R7 作暫存當(dāng)存儲器不夠用時(shí)則會
以data 型別的空間作暫存的個(gè)數(shù)超過0x7f 時(shí)就會出現(xiàn)地址不夠的現(xiàn)象
解決方法將以data 型別定義的公共變量修改為idata 型別的定義


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

嵌入式開發(fā)作為一種專業(yè)且技術(shù)密集型的領(lǐng)域,涵蓋了從硬件底層驅(qū)動、中間件到應(yīng)用層軟件開發(fā)等多個(gè)層面的工作,其所需的工具種類繁多,各有針對性,旨在提升開發(fā)效率、保證代碼質(zhì)量以及簡化調(diào)試過程。

關(guān)鍵字: 嵌入式開發(fā) keil

之后新建新的工程,添加.a文件就可以使用了,當(dāng)然也可以使用keil來添加,但是keil默認(rèn)的是用.lab,需要自己配置一下文件屬性,改為lib文件即可。一半release sdk的時(shí)候用這種方式很關(guān)鍵的,畢竟自己的核心代...

關(guān)鍵字: keil 文件屬性 lib文件

DSP28335與AD7606通過SPI的串行數(shù)據(jù)交互

關(guān)鍵字: keil C

為幫助大家更好使用單片機(jī)編程軟件,本文將對keil單片機(jī)編程軟件仿真、調(diào)劑技巧予以講解,并對該單片機(jī)編程軟件的常見錯(cuò)誤提示予以闡述。

關(guān)鍵字: 單片機(jī)編程軟件 指數(shù) keil

本文對于單片機(jī)編程軟件的介紹將基于如何采用keil單片機(jī)編程軟件調(diào)試stm32,如果你對單片機(jī)編程軟件抑或本文內(nèi)容具有興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: 單片機(jī)編程軟件 指數(shù) keil

本文對于單片機(jī)編程軟件的介紹基于兩點(diǎn):1.keil單片機(jī)編程軟件編譯環(huán)境優(yōu)化等級說明,2.keil單片機(jī)編程軟件中兩大概念名詞解析。

關(guān)鍵字: 單片機(jī)編程軟件 指數(shù) keil

為增加大家對單片機(jī)編程軟件的了解,本文將對keil單片機(jī)編程軟件予以介紹,主要在于介紹該單片機(jī)編程軟件的模式設(shè)置和一些編程事項(xiàng)。

關(guān)鍵字: keil 單片機(jī)編程軟件 指數(shù)

為幫助大家更快學(xué)會單片機(jī)編程軟件的使用,本文將對keil單片機(jī)編程軟件的使用方法加以介紹。如果你對本文內(nèi)容具有興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: keil 單片機(jī)編程軟件 指數(shù)

本文對單片機(jī)編程軟件的介紹基于Keil,主要在于介紹keil單片機(jī)編程軟件如何將hex下載進(jìn)STM32,如何燒寫hex文件以及如何直接使用二進(jìn)制數(shù)。

關(guān)鍵字: keil 單片機(jī)編程軟件 指數(shù)
關(guān)閉