Keil for ARM 5.33版基于RTE創(chuàng)建工程時(shí)候的必須注意事項(xiàng)
書接上回《KEIL for ARM 5.33最新版無(wú)法正常編譯,該如何解決?》,上回咱們第一次用Keil for ARM的這個(gè)新版本,遇到了默認(rèn)編譯器AC6,在配置上如果不在標(biāo)準(zhǔn)外設(shè)庫(kù)選擇選擇時(shí)候勾選Framework和RCC兩項(xiàng)(實(shí)際上配置工具橙色警告提示了這兩個(gè)遺漏)。
一個(gè)最簡(jiǎn)單的hello Word程序都可以報(bào)錯(cuò)一堆,警告一堆。
而在工程配置完成后,如果在工程配置上切換到AC5(老版本的)編譯器,就可以扭轉(zhuǎn)乾坤,實(shí)現(xiàn) 0 error 0 warning。
是不是很奇怪,所以我當(dāng)時(shí)就誤以為這是不是新版本的BUG?
有朋友看到我的帖后,告訴我說(shuō)這是AC6的新特性,對(duì)程序代碼審核更加嚴(yán)格了而已。
接下來(lái)咱們重新再建設(shè)一個(gè)工程,看看到底咋回事。
1、新建工程,選擇所用的芯片型號(hào)
2、進(jìn)入RTE配置菜單,配置選項(xiàng)如下
根據(jù)需要選擇你所用到的標(biāo)準(zhǔn)外設(shè)庫(kù),如果遺漏掉Framework和RCC會(huì)出現(xiàn)橙色警告,如下所示:
如果遺漏出現(xiàn)橙色警告,單擊左下角Resolve可以幫您勾選上,如果這個(gè)時(shí)候沒(méi)有補(bǔ)上這兩個(gè),就OK了,不要擔(dān)心,后面還可以補(bǔ)救。
單擊OK后,進(jìn)入工程,添加一個(gè)main.c的main函數(shù)文件:
這個(gè)時(shí)候如果編譯的話,效果如下
這是為何呢?仔細(xì)觀察警告類型,大多都是一些不同數(shù)據(jù)直接賦值轉(zhuǎn)換的警告,沒(méi)啥好擔(dān)心的,但是有不少像我一樣有0錯(cuò)誤0警告強(qiáng)迫癥的人,看到1個(gè)警告就難受。
怎么辦,打開(kāi)工程配置選項(xiàng):
發(fā)現(xiàn)AC編譯器這里默認(rèn)的是AC6,是個(gè)新東西啊,之前沒(méi)用過(guò),換成AC5試試看。
0錯(cuò)誤0警告了,好神奇
話說(shuō)回來(lái)了,如果剛才RTE配置時(shí)候,遺漏了Framework和RCC,直接編譯會(huì)出現(xiàn)多個(gè)錯(cuò)誤和幾十個(gè)警告,如果遇到這個(gè)問(wèn)題,就可以看我上一個(gè)貼講到的。在工程配置將AC6更換為AC5版本,然后保存,編譯工程,這個(gè)時(shí)候會(huì)發(fā)現(xiàn)同樣的變成了0錯(cuò)誤0警告,因?yàn)锳C5會(huì)自動(dòng)幫你把你遺漏的Framework和RCC添加回來(lái)。
而AC6更加嚴(yán)格,你沒(méi)有添加,它不會(huì)主動(dòng)幫你添加,它以為你不需要呢。
如果改成了AC5后,進(jìn)行了一次編譯,然后再切換回AC6會(huì)怎么樣呢?
仍然是0錯(cuò)誤0警告,好神奇,是不是?
怎么不報(bào)數(shù)據(jù)賦值類型不同的警告了呢?
注意下面這個(gè)位置的變化,在剛建好的時(shí)候默認(rèn)的是All warnings。
在改成AC5編譯一次后,切換回來(lái)變成了AC5-like Warnings。
可選的警告展示類型有5個(gè)選項(xiàng),只有AC6默認(rèn)的All Warnings選項(xiàng)會(huì)導(dǎo)致一堆的警告,讓人心煩啊。
這就說(shuō)明如果你用AC6,可以讓警告的執(zhí)行標(biāo)準(zhǔn)像AC5一樣不嚴(yán)格。
大家明白了嗎?
這對(duì)不太了解AC6的人會(huì)認(rèn)為是個(gè)設(shè)計(jì)上的BUG,而對(duì)AC6的設(shè)計(jì)人員呢,這就是他們想要的結(jié)果,因此這不算個(gè)BUG,作為用戶應(yīng)該了解產(chǎn)品設(shè)計(jì)者的初衷,才能用好這個(gè)工具。
另外關(guān)鍵的一點(diǎn),該貼的目的不是真的要討論算不算BUG,而是要分享給你如何快速創(chuàng)建新的工程,并讓你的代碼 0 error 0 warning。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!