历史上的今天

今天是:2024年10月06日(星期日)

2018年10月06日 | keil编译时出现错误和警告总结

发布者:幸福时刻 来源: eefocus关键字:keil编译  错误  警告 手机看文章 扫描二维码
随时随地手机看文章

1、ERROR L104: MULTIPLE PUBLIC DEFINITIONS重复定义


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


      对于比较小的程序,一般只有一个c文件和一个头文件,全局变量我们通常会直接定义在c文件中,在程序之前加int i定义。如果要在头文件中定义有以下两种方法:用extern来声明:extern int i;这一句只是对变量i进行声明,在c文件的程序之前必须加上int i进行定义。extern int i=0;这一句声明和定义都做了。


    对于大一点的程序,有很多c文件和头文件,这个时候全局变量就必须在头文件中声明(不需要初始化),然后在一个c文件中定义(该初始化的要初始化)。如果在头文件中定义,则编译的时候会出现重复定义的错误。如果只有头文件中声明就会出现没有定义有警告。


   *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS


       SYMBOL: K


       MODULE: 222.obj (222)


出现上述错误则是因为变量k重复定义,把你的头文件中的变量定义前加extern(只是变量声明不用初始化),再在某一个你要调用该变量的c文件的程序之前再定义(注意第一个调用的c文件要负责附带初始化该变量,其他调用的c文件就不需要初始化过程啦)


 


 


2、*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS


 


解决办法: 说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过,或者根本没有调用它的语句。 这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简单的调整就可以。不理它也没什么大不了的。


 


 


 


3、'DATA':SEGMENT TOO LARGE


 


解决办法:(1)内部直接寻址段使用溢出,可以将Option   for   Target "XXXX "中   的Target属性页中Memory   Model   改为Large:Variables   in   Xdata   即可。


 


(2)数据段超出芯片内部RAM范围,把一些数据变量放到外部数据存储器中去就可以了。


 


 


4、Limit:0800h BYTES


 


解决办法:2K限制说明你的KEIL不是注册版,你到网上找个注册机,算个号,填到KEIL里就能解开这个限制了。


 


 


5、破解keil软件注册报错:ERROR R208: RENEW LICENSE ID CODE (LIC)


 


解决办法:我电脑装上Keil C51 v8.02后,无论如何都不能激活成功,添加license ID一直提示“ ERROR R208: RENEW LICENSE ID CODE (LIC)”。改用修改TOOLS.INI文件的方法:找到keil安装目录下的TOOLS.INI文件,打开它,在最下面写上这一行IC0=LSXJ7-EDJF2-DQA02-3QVZL-FRG8T-C6WID(注册码可以用你的Keil_lic_v2.exe生成),保存退出,然后点 File 下的 License Management 显示已经注册成功。


 


调试后,提示2K代码的限制。这说明Keil其实还没有注册成功。同时编译时还会报错!应用程序错误。


 


关闭所有网络连接,然后进行注册方可。。。。


 


 


6、C8051F020 下载器JTAG U-EC5无法下载


 


解决办法:一种软件对USB口调试器(EC5和ToolStick)进行复位和固件升级。(如果没有显示设备序列号,可以重插上EC5后,点Refresh list),之后点Updata Fireware即可更新为最新固件。


 


 


 


7、keil\tools.ini.file could not be found


 


解决办法:那是因为keil软件没有安装好,重新安装一遍就好了。


8、requires ansi-style prototype



解决办法:原因应该是:你的主函数在调用该函数时,找不到函数原型


 


                   解决办法:把对应函数放在最先定义和声明


 


 


 


 


1)提示无M51文件


 


编译时候提示:


 


F:\...\XX.M51


 


File has been changed outside the editor, reload 


解决方法:

重新生成项目,产生STARTUP.A51即可。


 


(2)L15重复调用


***WARNING L15: MULTIPLE CALL TO SEGMENT


SEGMENT:  


CALLER1: 


CALLER2:


    该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。


    出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一个中断打断,从而使得结果发生变化并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时候都可以被ISR打断,一段时间后又可以运行,但是相应数据不会丢失)。

    原因之二是用于局部变量和变量(暂且这样翻译,arguments,[自变量,变元一数值,用于确定程序或子程序的值])的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的内存区就会被使用,这将导致其他函数的内存冲突。

    例如,第一个警告中函数WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51被定义,它被一个中断服务程序或者一个调用了中断服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C中。


解决方法:

    如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁止),并且该函数不占用内存(假设只使用寄存器),则你可以完全忽略这种警告。


关键字:keil编译  错误  警告 引用地址:keil编译时出现错误和警告总结

上一篇:keil中勾选microlib使用printf
下一篇:单片机简单数字滤波算法

推荐阅读

    日前彭博信息报导,近30家美国企业的服务器主板疑似遭植入中国间谍芯片,拖累美超威计算机公司(Super Micro Computer Inc.)4日股价暴跌41%, 使这家由台湾工程师在25年前创办的公司在会计帐务遭华尔街质疑后,又笼罩新的阴霾。MarketWatch报导,美超威是一家名气不大的硅谷公司,25年前由台湾工程师梁见后(Charles Liang)创立,2007年股...
一、总部 1.国网办公厅、国网董办 2.国网总师办 3.国网研究室 4.国网发展部 5.国网财务部 6.国网安监部 7.国网设备部 8.国网营销部、国网农电部 9.国网科技部、国网联办 10.国网基建部 11.国网特高压部 12.国网水新部 13.国网互联网部 14.国网物资部 15.国网产业部 16.国网宣传部、国网外联部 17.国网国际部 18.国网...
国家统计局公布,2020年1-8月全国规模以上工业企业实现利润总额3兆7,166.5亿元,年减4.4%,降幅较1-7月收敛3.7个百分点,呈连六月回升。其中,8月全国规模以上工业企业利润年增19.1%,增速较7月下降0.5个百分点,但仍连4个月呈年增长,延续稳定增长态势。大陆国家统计局工业司高级统计师朱虹指出,8月企业生产经营状况好转,供需循环已逐步改善...
来源:学习军团·解放军新闻传播中心融媒体作者:解放军报记者 韩 成 通讯员 于 晨“机器人技术正在深刻改变着人类的生产和生活方式,中国空间站机械臂也助力我们完成了两次出舱任务。”9月中旬,在北京亦庄开幕的2021世界机器人大会上,神舟十二号飞行乘组3位航天员聂海胜、刘伯明、汤洪波从中国空间站传来“太空点赞”。被表扬的主角,是我国自主研...

史海拾趣

问答坊 | AI 解惑

混合动力车为何被中国冷落?

上周举办的北京车展无疑是中国汽车圈最受瞩目的盛事,不过在车展揭幕以前,首先碰到的却是一家汽车零件业巨头——美国江森自控公司。该公司宣布在中国推出瓦尔塔品牌的汽车蓄电池,同时更加引起我注意的是,有关人员还透露说,该公司在混合动力轿车 ...…

查看全部问答∨

此电路是如何振荡的

file:///D:/我的文档/My%20Pictures/线性开关两用电源.jpg…

查看全部问答∨

怎通过程序在WINCE下面修改注册表

我要修改平台project.reg,添加以下内容: [HKEY_LOCAL_MACHINE\\comm\\vmini1\\parms\\tcpip]    "defaultgateway "   =   multi_sz: "192.168.0.1 "    "subnetmask "   =&nb ...…

查看全部问答∨

寻求帮助!榨油厂豆粕生产人机交互系统设计

榨油厂豆粕生产人机交互系统设计 1   掌握PLC的基本原理 2   掌握PLC的硬件以及指令 3   掌握用组态软件编制人机界面的方法 4   完成上下位微机的软件编制与调试 5   按要求完成毕业论文 ...…

查看全部问答∨

高薪诚聘程序员

高薪诚聘程序员 华为公司南京研究所正在大量招聘嵌入式软件人才,条件如下: 1、全日制本科2005年以前毕业(含2005年),或2006年以前毕业的研究生(含2006年); 2、熟悉以下任何一项:    (1)vxworks或qnx操作系统   &n ...…

查看全部问答∨

高频放大器

 接触高频有段时间了,但是对于高频放大管子的设计还是一知半解,根本不能达到设计电路的目的。 只是按照别人的设计来规划自己的电路,换个频段,不一定的增益,总是不能实现。 不知道哪位大侠这方面很了解,可以指导一下,;P …

查看全部问答∨

lpcxpresso调试失败

今天配置好了lpcxpresso,现在遇到一个不会解决的问题,就是点击debug的时候程序无法烧写到板子上,新手不动,望指教,谢谢!…

查看全部问答∨

M3操作内部ram的速度

程序里要涉及到存1个4KB的buffer。 但向buffer里面赋值感觉速度很慢。 测试了下:在主频80M的情况下,存一个字节至少需要276ns,也就是20多个时钟周期。就算减掉循环跳转的时间,也感觉不应该用这么长的时间。而且M3说的单周期访问内部RAM。 麻 ...…

查看全部问答∨

【求助】NTC温度采样电路

NTC温度采样电路 请问下一般不是一个普通电阻加一个NTC么 这里的100欧姆电阻的作用是什么呢? …

查看全部问答∨

【LPC54100】到货上电

本帖最后由 ljj3166 于 2015-2-14 15:42 编辑 万能的顺丰不打烊 听说快递费还涨价了 感谢论坛的支持 上图 收到货了 一打开就是看到2块MCU 然后就是一大堆的接口,最熟悉的就是UNO的了 右侧还有2组,会不会NXP也要自己制定接口了? 菊 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved