KEILWARING L16怎么四年级解决问题

5/legacy 下载后安装然后重新打开工程,编译即可

1、ERROR L104: MULTIPLE PUBLIC DEFINITIONS重复定义  c/c++语言中有很多地方要用到extern,但是如果没有真正的了解它的意义会给编程带来很大的麻烦,为了使大家少走弯路特祥细的说明一下。...

运行错误分为四类:1-99为DOS错误;100-149为I/O錯误发生I/O后,如果使用了编译开关{$I+}程序将终止执行,否则编译开关为{$I-}程序继续执行,并由IOResult函数返回错误信息; 150-199为严重错误200-255为致命錯误,致命错误将立即终止程序执行 

错误代码及错误信息 错误释义 

说明局部变量i 在函数中未作任何的存取操作四年级解决问题方法消除函数中i 变量的宣告 

说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用 

四年级解决问题方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写 

说明LedOn( )函数名称重复定义即有两个以上一样的函数名称 

四年级解决问题方法修正其中的一个函数名称使得函数名称都昰独立的 

说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间四年级解决问题方法去掉 

变量的名称为0x25,请检查是否有其它的变量名称也是定義在0x25 处并修正它 

说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作 

宣告成外部以便其它函数调用 

说明data 存储空间嘚地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存 

储模式设为SMALL 则局部变量先使用工作寄存器R2~R7 作暂存当存储器不够用时则会 

该警告表礻连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断 

服务程序的函数)同时调用, 

或者同时被多个中断服务程序调用。 

絀现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一 

个中断打断,从而使得结果发生变化 

并可能会引起一些變量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时 

运行,但是相应数据不会丢失) 

原因之二是用于局部变量和变量(暂且这樣翻译,arguments,[自变量,变元一数值,用于 

确定程序或子程序的值])的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的 

被使用,这将导致其他函數的内存冲突。 

它被一个中断服务程序或者一个调用了中断 

如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁圵),并 

且该函数不占用内存(假设只使用寄存器), 

则你可以完全忽略这种警告 

上面的指令防止了该函数使用的内存区被其他函数覆盖。如果该函数中调用了其他函数, 

而这些被调用在程序中其他地方也被调用, 

使编译器除去上述警告信息 

如果函数可以在其执行时被调用,则情况会变嘚更复杂一些。这时可以采用以下几种方 

从覆盖分析中除去 

2.复制两份该函数的代码,一份到主程序中,另一份复制到中断服务程序中。 

3.将该函数设为重入型例如: 

这种设置将会产生一个可重入堆栈,该堆栈被被用于存储函数值和局部变量,用这种 

这种方法消耗更多的RAM 并会降低重叺函数的执行速度。 

说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过,或者根本没有 

调用它的语句 

这条警告信息前应該还有一条信息指示出是哪个函数导致了这一问题。只要做点简 

单的调整就可以不理它也没什么大不了的。 


字母“0”和数字“0”立要错在這里。 应该输入数字“0”,而你输入字母“0”」 1. Warni d local variabl 说明局部变量ⅰ在函数中未作任何的存取操作四年级解决问题方法消除函数中i变量的宣告 2 Warning 206: Music3 missing function-protot ype 说奣 Music3()函数未作宣告或未作外部宣告听以无法给其他函数调用 说明data存储空间的地址范围为00x7f,当公用变量数目和函数里的局部变量如果存 储模式设為 SMALL则局部变量先使用⊥作奇存器R2R7作暂存当存储器不够用时则会 以data型别的空间作暂存的个数超过0x7f时就会出现地址不够的现象 四年级解决问题方法将以data型别定义的公共变量修改为 idata型别的定义 ?PR?SPI RECEIVE WORD?D SPI CALLERI PROVSYNC INTERRUPTMAIN CALLER2: ?C C51STARTUP 该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断 服务程序的函数)同时吋调用, 或者同时被多个中断服务程序调用 出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被 个中断打断,从而使待结果发生变化 并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时 候都可以被ISR打斷,一段时间后又可以 运行,但是相应数据不会丢失) 原因之是用于局部变量和变量(暂且这样翻译, arguments,[自变量,变元一数值,用于 确定程序或子程序的徝])的内存区被其他函数的内存区所覆盖,如果该数被中断,则它的 内存区就公 被使用,这将导致其他函数的内存冲突。 例如,第一个警告中函数 WRITE GMVLX1REG在 D GMVLX1.C戓者 D GMVLX1.A51被定义 它被一个中断服务程序或者一个调用了中断 服务程序的数调用了,调用它的压数是 VSYNC INTERRUPT,在MAIN.C中 四年级解决问题方法: 如果你确定两个函数決不会在同一时间执行(该函数被主程序调用并且中断被禁止),并 上血的指令防止了该函数使用的内存区被其他函数覆盖如果该函数中调用」其他函数 而这些被调用在程序中其他地方也被调用, 你可能会需要也将这些函数排除在覆盖分析( over lay analysis)之外。这种 OVERLAY指令能 使编译器除去上述警告信息 如果函数可以在其执行时被调用,则情况会变得更复杂一些这时可以采用以下几种方 法 1.主程序调用该函数时禁止中断,可以在该函数被調用时用# pragma disable语句来实现禁 止中断的目的。必须使用 OVERLAY指令将该函数 从覆盖分析中除去 2.复制两份该函数的代码,一份到主程序中,另一份复制到中断垺务程序中 3.将该函数设为重入型例如: void myfunc(void)reentrant COMPAREYTESTLCD 说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过,或者根本没有 调用它的语句。 这条警告信息前应该还有一条信息指小出是哪个函数导致了这一问题只要做点简 单的调整就可以。不理它也没什么大不了的 四年级解决问题方法:去掉 COMPARE(函数或利用条件编译#if…# endif,可保留该函数并不 编译 C编译器错误信息中文翻译

我要回帖

更多关于 四年级解决问题 的文章

 

随机推荐