关键词不能为空

当前您在: 主页 > 英语 >

Keil最常见编译错误和警告

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-09 22:14
tags:

-

2021年2月9日发(作者:router是什么意思)



今天在


EINT


的范 例里添加了一个函数,即


eint.c


中添加了一个

< p>
datawrite()


的函数,并在主


函数


main.c


中调用,编译便警告



warning: #223-D: function


很奇 怪,



eint.c


中也有初始化函数


EINTInit()


同样在


main .c


中调用没有问题,


问什么偏偏


这个 不行。




但毕竟是个警告,还不是错 误,做了个测试


IO




while(1)



{



FIO1SET = 1<<19;



delaySysTick(10);



Data_write(0xff00, 0xff);



FIO1CLR = 1<<19;



delaySysTick(10);



}


下载执行后发现,此


IO


根本没有输出。



看来这个警告还是不能回避的,


在网上差了下,


有类似问题说是 库的原因,


具体是什么也没


说清楚。于是尝试着一一打开库文件 ,打开


eint.h


,恍然大悟,这里赫然写着



extern void EINT0_IRQHandler(void) __irq;


extern DWORD EINTInit( void ); < /p>


原来在这里将


eint.c


中的函数与< /p>


main.c


相关联,也就是在


eint .c


中添加了新函数,还有在


这里声明调用才行。



eint.h


中,添加



extern void Data_write(WORD addr, BYTE data);


即可



Error: L6200E


Error: L6200E: Symbol temp multiply defined (by wenshidu.o and main.o).


在编译的


时候出现了这个问题,但是检查不出来,希望各位大侠帮帮忙,


什么变量你给付了两次值



你看看是不是那个外部变量你又给赋值了


main.c


申明,其他


.c


文件 对应的


.h


文件中用


extern


引用



error: #20


error: #20: identifier


谁能说说,哪里错了





你的固件库里的库文件没有添加进工程里面,所以出现未定义 的情况。



TIM2_IRQChannel

< br>指定时器


2


的中断通道没有定义,其实在固件库对这些参 数都有定义,


宏定义代替了一串寄存器地址数据。需要将


.C< /p>


文件添加到工程文件中




warning:


#1-D



main.c(7): warning:


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



当使用


keil

编译时,弹出这样的警告信息:


main.c(7): warning:


#1-D: last line of file ends


without a newline


这个是由于在


main


函数的


“} ”


后,没有加回车。



只要在


main


函数的


“}”


后加回车键,此警告信息即可消除。



error:#65



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



分数送你了,


问题在你回答之前已经 解决了,


头文件里的结构体定义里的最后一行没有加


< p>



NB menu{..};


error: #1113:


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


< br>先在网上查有的说是


__asm{NOP;}


,从


intrins.h


里调用,可犄角旮旯全找了,也没看到什



intrint.h


的文件。如果直接用,就 出现


error: #1113: Inline assembler not permitted when generating Thumb code


最 后搜索这条错误,知道是因为


__asm(


指令



这种语法是内联汇编(


inline assembl y


)的


语法。而


RMDK


下,内联汇编仅支持


ARM


汇编语言,不支持


Thumb


或者


Thumb-2


汇编


语言;但内嵌汇编器支持


Thumb

< p>


Thumb-2





__asm


放到一个单独的子函数再 被调用就没问题了




如下:



__asm void nop(void)


{


NOP


}


然后在之后的


C

< br>代码中调用该函数:



void main()


{


...


nop();


...


}




最新更新



来自


KEIL


官网






warning:



#223-D


....sourceCCxx00_New.C(718):


warning:



#223-D:


function



declared


implicitly


在使用的文件中添加


extern void _NOP_();


既可



warning:



#1295-D


....includeCCxx00_New.h(20):


warning: #1295-D:


Deprecated


declaration


CC_XCal


- give arg types


没有用形参



定时时用


void CC_XCal(void);


即可





Error: L6218E: Undefined symbol


.:


Error:


L6218E:


Undefined


symbol


FSMC_NORSRAMCmd


(referred


f


rom


tft_lcd.o).


.:


Error:


L6218E:


Undefined


symbol


FSMC_NORSRAMInit


(referred


fro


m


tft_lcd.o).


Target


not


created


请教高人,我该如何处理。




你看看


tft_lcd


里面有没有添加


fsmcXXX.h


之类的头文件,这个错误是说你使用的函数没有< /p>


被定义。



一般只要添加相应的头文件即可







error: #101:


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





#ifndef __STM32F10x_LIB_H


#define __STM32F10x_LIB_H


#endif


调整到最后!








error: #247:


function



has


already


been defined


有一个同名的



DelayUs


类已经被定义过了




error: #109:


expression


must


have


(pointer-to-) function type



这个问题就是那


19



error


中的大部分,意思是表达式需要 一个(指针)函数参数,我一开始以为是自己


函数声明或者调用上的错误,


但是看了下发现并没有错,


后来查了好久发现原来是犯了一个很低级的错误:


将宏定义和函数名重名了。因为我一开始想的是每一个宏定义对应一个函数名,这样做起 来就比较清晰,


但是我却很傻逼地将函数名每次直接复制到宏名,导致了这种蛋碎的结果 。




warning:


#61-D


warnin


g:


#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


由于编译器默认


signed int



32


位有符号整数类型


,



1<<31


实际 为


0x80000000,


这样就有可能改写了符号位


(


最高位


)


依此类 推


,(2<<30),(3<<29)...


等都会出现编译警 告问题


.


解决办法为


: ((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 < /p>


描述


:


变量


'd '


定义但从未使用


,


或者是

< p>
,


虽然这个变量你使用了


,


但编译器认为变量


d


所在的语


句没有 意义


,


编译器把它优化了


.


解决


:


仔细衡量所定义的变量

< br>d


是否有用


,


若是认定变量


d


所在语句有意义


,


那么尝试用


volatile


关键字修饰变量


d,


若是真的没有用


,


那么删 除掉以释放可能的内存


.



error:


#159:



.error:


#159: declaration is incompatible with previous


void a(void) //


函数


a


的实体< /p>



{



b(); //


调用函数


b


}


void b(void) //


函数


b


的实体



{


...


}


这样如果点编译


,


就会产生


error:


#159


的错误

,


因为当函数


a


调用函数


b



,


发现在这之前都


没有函数


b


的任何声明


.


解决方法


:


在函数


a


调用函数


b


之前< /p>


,


对函数


b


进行 声明


,



:



void b(void); //


对函数

b


进行声明



void a(void) //


函数


a


的实体< /p>



{



b(); //


调用函数


b


}


void b(void) //


函数


b


的实体



{

-


-


-


-


-


-


-


-



本文更新与2021-02-09 22:14,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/624364.html

Keil最常见编译错误和警告的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文