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

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]如果是出現(xiàn)在c文件中, 多半是因?yàn)樯倭艘粋€\")\",或者錯誤行有編譯器不識別的字符

.error: #18:

6.error: #18: expected a ")"

如果是出現(xiàn)在c文件中, 多半是因?yàn)樯倭艘粋€")",或者錯誤行有編譯器不識別的字符

如果出現(xiàn)在頭文件中,錯誤行又是一個函數(shù)聲明,多半是因?yàn)樵诤瘮?shù)聲明中有編譯器不認(rèn)識的字符

error: #20

error: #20: identifier "TIM2_IRQChannel" is undefined 誰能說說,哪里錯了

你的固件庫里的庫文件沒有添加進(jìn)工程里面,所以出現(xiàn)未定義的情況。

TIM2_IRQChannel指定時器2的中斷通道沒有定義,其實(shí)在固件庫對這些參數(shù)都有定義,宏定義代替了一串寄存器地址數(shù)據(jù)。需要將.C文件添加到工程文件中

warning: #1-D

main.c(7): warning: #1-D: last line of file ends without a newline

當(dāng)使用keil編譯時,彈出這樣的警告信息:main.c(7): warning: #1-D: last line of file ends without a newline

這個是由于在main函數(shù)的“}”后,沒有加回車。

只要在main函數(shù)的“}”后加回車鍵,此警告信息即可消除。

error:#65

...test_menu.c(27):error:#65:expected a ";"

分?jǐn)?shù)送你了,問題在你回答之前已經(jīng)解決了,頭文件里的結(jié)構(gòu)體定義里的最后一行沒有加";" 如 NB menu{..};

Error: L6200E

Error: L6200E: Symbol temp multiply defined (by wenshidu.o and main.o).在編譯的時候出現(xiàn)了這個問題,但是檢查不出來,希望各位大俠幫幫忙

什么變量你給付了兩次值

你看看是不是那個外部變量你又給賦值了

main.c申明,其他.c文件對應(yīng)的.h文件中用extern引用

warning: #223-D

..\..\source\CCxx00_New.C(718): warning: #223-D: function "_NOP_" declared implicitly

在使用的文件中添加extern void _NOP_();既可

warning: #1295-D

..\..\include\CCxx00_New.h(20): warning: #1295-D: Deprecated declaration CC_XCal - give arg types

沒有用形參 定時時用void CC_XCal(void);即可

Error: L6218E: Undefined symbol

.\Obj\output.axf: Error: L6218E: Undefined symbol FSMC_NORSRAMCmd (referred from tft_lcd.o).

.\Obj\output.axf: Error: L6218E: Undefined symbol FSMC_NORSRAMInit (referred from tft_lcd.o).

Target not created

請教高人,我該如何處理。

你看看tft_lcd里面有沒有添加fsmcXXX.h之類的頭文件,這個錯誤是說你使用的函數(shù)沒有被定義。

一般只要添加相應(yīng)的頭文件即可

error: #101:

error: #101: has already been declared in the current scope

#ifndef __STM32F10x_LIB_H

#define __STM32F10x_LIB_H

#endif調(diào)整到最后!

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-20349.png

error: #247: function "DelayUs" has already been defined

有一個同名的 DelayUs類已經(jīng)被定義過了

error: #109: expression must have (pointer-to-) function type

這個問題就是那19個error中的大部分,意思是表達(dá)式需要一個(指針)函數(shù)參數(shù),我一開始以為是自己函數(shù)聲明或者調(diào)用上的錯誤,但是看了下發(fā)現(xiàn)并沒有錯,后來查了好久發(fā)現(xiàn)原來是犯了一個很低級的錯誤:將宏定義和函數(shù)名重名了。因?yàn)槲乙婚_始想的是每一個宏定義對應(yīng)一個函數(shù)名,這樣做起來就比較清晰,但是我卻很傻逼地將函數(shù)名每次直接復(fù)制到宏名,導(dǎo)致了這種蛋碎的結(jié)果。

warning: #61-D

warning: #68-D:

在KeilARM的LPCARM,存在(1<<31)編譯警告問題

main.c(174): warning: #61-D: integer operation result is out of range

main.c(174): warning: #68-D: integer conversion resulted in a change of sign

由于編譯器默認(rèn)signed int即32位有符號整數(shù)類型,而1<<31實(shí)際為0x80000000,

這樣就有可能改寫了符號位(最高位)

依此類推,(2<<30),(3<<29)...等都會出現(xiàn)編譯警告問題.

解決辦法為: ((unsigned int)1<<31),((unsigned int)2<<30),...

warning: #1295-D:

warning: #1295-D: Deprecated declaration ShowSendTime - give arg types

解決方法:將void ShowSendTime()改為void ShowSendTime(void)

warning: #550-D:

warning: #550-D: variable "d" was set but never used

描述:變量'd'定義但從未使用,或者是,雖然這個變量你使用了,但編譯器認(rèn)為變量d所在的語句沒有意義,編譯器把它優(yōu)化了.

解決:仔細(xì)衡量所定義的變量d是否有用,若是認(rèn)定變量d所在語句有意義,那么嘗試用volatile關(guān)鍵字修飾變量d,若是真的沒有用,那么刪除掉以釋放可能的內(nèi)存.

error: #159:

.error: #159: declaration is incompatible with previous "wr_lcd" (declared at line 40)

void a(void) //函數(shù)a的實(shí)體

{

b(); //調(diào)用函數(shù)b

}

void b(void) //函數(shù)b的實(shí)體

{

...

}

這樣如果點(diǎn)編譯,就會產(chǎn)生error: #159的錯誤,因?yàn)楫?dāng)函數(shù)a調(diào)用函數(shù)b時,發(fā)現(xiàn)在這之前都沒有函數(shù)b的任何聲明.

解決方法:在函數(shù)a調(diào)用函數(shù)b之前,對函數(shù)b進(jìn)行聲明,如:

void b(void); //對函數(shù)b進(jìn)行聲明

void a(void) //函數(shù)a的實(shí)體

{

b(); //調(diào)用函數(shù)b

}

void b(void) //函數(shù)b的實(shí)體

{

...

}

error: #70:

error: #70: incomplete type is not allowed

原來是重復(fù)定義了,包含了兩次的psock的定義,所以才會出現(xiàn)這種情況。因?yàn)槲野l(fā)現(xiàn)psock和pt是一樣定義的,但是pt是不報錯的,所以我就試圖刪除頭文件中include頭文件的那一行,錯誤消除了,謝謝你了,還是實(shí)踐出真知啊,有些時候不能死編,要思考,哈哈。

warning: #550-D:

1.warning: #550-D: variable "d" was set but never used

描述:變量'd'定義但從未使用,或者是,雖然這個變量你使用了,但編譯器認(rèn)為變量d所在的語句沒有意義,編譯器把它優(yōu)化了.

解決:仔細(xì)衡量所定義的變量d是否有用,若是認(rèn)定變量d所在語句有意義,那么嘗試用volatile關(guān)鍵字修飾變量d,若是真的沒有用,那么刪除掉以釋放可能的內(nèi)存.

warning: #1-D:

2.warning: #1-D: last line of file ends without a newline

描述:文件最后一行不是新的一行.編譯器要求程序文件的最后一行必須是空行,想了半天沒想通為什么要這樣.

解決:可以不理會.若是覺得出現(xiàn)警告不爽,那么在出現(xiàn)警告的文件的最后一行敲個回車,空出一行.

warning: #111-D:

3. warning: #111-D: statement is unreachable

描述:聲明不可能到達(dá).多出現(xiàn)在這種場合:

int main(void)

{

...

while(1) //無限循環(huán),這在不使用操作系統(tǒng)的程序中最常見

{

...

}

return 0; //這句聲明在正常情況下不可能執(zhí)行到,編譯器發(fā)出警告

}

解決:不理會.

warning: C3017W:

4. warning: C3017W: data may be used before being set

描述:變量'data'在使用前沒有明確的賦值.如:

uint8 i,data; //定義變量i和data,二者都沒有明確賦值

for ( i = 0; i < 8; i++) //變量'i'在語句中被賦值0

{

if ( IO1PIN & SO_CC2420 )

data |= 0x01; //變量'data'在使用前沒有明確賦值,編譯器發(fā)出警告

else

data &= ~0x01;

}

解決:應(yīng)仔細(xì)衡量該變量的初始值是否為0,若是,可以不理會這個警告,因?yàn)镸DK編譯器在程序執(zhí)行前,會將使用到的數(shù)據(jù)區(qū)初始化為0,但若是該變量的初始值不應(yīng)該是0,忽略這個警告可能會引起致命錯誤.這個警告應(yīng)引起足夠重視.應(yīng)養(yǎng)成變量賦初值的習(xí)慣,好在有編譯器給把關(guān).

warning: #177-D:

5. warning: #177-D: variable "temp" was declared but never referenced

描述:變量'temp'進(jìn)行了聲明但沒有引用.多出現(xiàn)在聲明了一個變量,但卻沒有使用它,它和warning: #550-D: variable "temp" was set but never used不同之處在于temp從沒有使用過.

解決:若是定義的變量確實(shí)沒有用,刪除掉;若是有用,則在程序中使用.

與該警告類似的還有 warning: #177-D: function "MACProcessBeacon" was declared but never referenced

warning: #940-D:

6. warning: #940-D: missing return statement at end of non-void function "DealwithInspect2"

描述:返回非空的函數(shù)"DealwithInspect2"的最后缺少返回值聲明.如:

int DealwithInspect2(uint32 test)

{

...

...

...

//此處應(yīng)該是return x;返回一個int型數(shù)據(jù),若是沒有返回值,編譯器產(chǎn)生警告

}

.warning: #1295-D:

7..warning: #1295-D: Deprecated declaration lcd_init - give arg types

描述:在定義函數(shù)的時候,如果你寫上函數(shù)參數(shù),就會有這個警告,比如void timer_init(); 這里就沒有形參,如果這樣的話,編譯器會給出警告.

error: #65:

1. error: #65: expected a ";"

描述:缺少分號.大多是漏忘';'.

解決:雙擊錯誤行,在定位到錯誤點(diǎn)的附近找到?jīng)]加';'號的語句,加上分號.并不一定在定位到的錯誤行才卻分號,可能是這行的上一行,也可能是下一行.

error: #65: error: #20

2. error: #65: expected a ";"和 error: #20: identifier "xxxx" is undefined一塊出現(xiàn),而且后面的error: #20錯誤可能一大堆

描述:這個錯誤對于第一次遇上的人來說絕對是個噩夢,當(dāng)錯誤出現(xiàn),滿懷希望的雙擊錯誤提示,來到錯誤行時卻愕然發(fā)現(xiàn),錯誤行絕對沒有錯,于是找找錯誤行的上一行,下一行,沒有錯誤,再找上上行,下下行...讓人無比郁悶的事情出現(xiàn)了:編譯提示的所有錯誤行都不可能有錯誤出現(xiàn).其實(shí)這最可能是你在.h文件聲明外部變量或者函數(shù)時,沒有在聲明語句的最后加分號!如果你有很多模塊,如main.c,lcd.c,key.c...有很多頭文件,如lcd.h,key.h,若是在lcd.h文件聲明函數(shù)時沒有加分號,那么這種錯誤可能定為到main.c中,所以要檢查所有頭文件.

解決:仔細(xì)檢查.h文件,將分號補(bǔ)上.

Error: L6200E:

3. Error: L6200E: Symbol flagu multiply defined (by uart0.o and main.o).

描述:變量(也是一種符號)flagu多處定義(在uart0.c中和main.c都定義了).通常錯在全局變量定義重復(fù).比如:在main.c中定義全局變量flagu:

uint8 flagu=0;

在uart0.c中也用到該變量,于是聲明此變量,我通常都是先復(fù)制定義的變量再在變量前面加關(guān)鍵字extern修飾:

extern uint8 flagu=0;

然后編譯,就會出現(xiàn)上面的連接錯誤,原因在于,我在uart0.c中是又定義了一個變量,而不是聲明變量,因?yàn)槲医o變量賦了初值"flagu=0",這樣就重復(fù)定義了變量flag.正確的聲明方法是去掉賦值部分:

extern uint8 flagu;

解決辦法:找到重復(fù)定義的變量,看情況修改一處.

error: #159:

4.error: #159: declaration is incompatible with previous "wr_lcd" (declared at line 40)

描述:在wr_lcd函數(shù)還沒有聲明之前就已經(jīng)使用了.多出現(xiàn)在兩種情況:第一種,wr_lcd函數(shù)體還沒有寫,就已經(jīng)用到了它,這種情況多出現(xiàn)在寫一個程序的大體結(jié)構(gòu)中,只是簡單寫一下框架.第二種情況比較常見,函數(shù)a調(diào)用函數(shù)b,但函數(shù)b的函數(shù)體在函數(shù)a的下面:

void a(void) //函數(shù)a的實(shí)體

{

b(); //調(diào)用函數(shù)b

}

void b(void) //函數(shù)b的實(shí)體

{

...

}

這樣如果點(diǎn)編譯,就會產(chǎn)生error: #159的錯誤,因?yàn)楫?dāng)函數(shù)a調(diào)用函數(shù)b時,發(fā)現(xiàn)在這之前都沒有函數(shù)b的任何聲明.

解決方法:在函數(shù)a調(diào)用函數(shù)b之前,對函數(shù)b進(jìn)行聲明,如:

void b(void); //對函數(shù)b進(jìn)行聲明

void a(void) //函數(shù)a的實(shí)體

{

b(); //調(diào)用函數(shù)b

}

void b(void) //函數(shù)b的實(shí)體

{

...

}

error: #137:

5. error: #137: expression must be a modifiable lvalue

描述:表達(dá)式必須是一個可以修改的左值.主要出現(xiàn)在這種現(xiàn)象:

a=NUM;

NUM是一個數(shù)值或表達(dá)式,a為一個變量,但a被定義為像const這種不可更改的類型,導(dǎo)致NUM不能賦值給變量a.

解決方法:要么放棄賦值,要么修改變量屬性.

error: #1113:

折騰了大半天,才搞明白一個空操作的指令

先在網(wǎng)上查有的說是__asm{NOP;},從intrins.h里調(diào)用,可犄角旮旯全找了,也沒看到什么intrint.h的文件。如果直接用,就出現(xiàn)error: #1113: Inline assembler not permitted when generating Thumb code

最后搜索這條錯誤,知道是因?yàn)開_asm("指令");這種語法是內(nèi)聯(lián)匯編(inline assembly)的語法。而RMDK下,內(nèi)聯(lián)匯編僅支持ARM匯編語言,不支持Thumb或者Thumb-2匯編語言;但內(nèi)嵌匯編器支持Thumb和Thumb-2。

__asm放到一個單獨(dú)的子函數(shù)再被調(diào)用就沒問題了

如下:

__asm void nop(void)

{

NOP

}

然后在之后的C代碼中調(diào)用該函數(shù):

void main()

{

...

nop();

...

}

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉