关键词不能为空

当前您在: 主页 > 英语 >

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最常见编译错误和警告的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文