教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

C语言编译错误总结(2)

来源:网络收集 时间:2026-09-01
导读: 以data 型别的空间作暂存的个数超过0x7f 时就会出现地址不够的现象 解决方法将以data 型别定义的公共变量修改为idata 型别的定义 说明如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的 解

以data 型别的空间作暂存的个数超过0x7f 时就会出现地址不够的现象 解决方法将以data 型别定义的公共变量修改为idata 型别的定义

说明如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的 解决办法加以归纳以期共享

10.***WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?_WRITE_GMVLX1_REG?D_GMVLX1 CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP

***WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?_SPI_SEND_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP

***WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP

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

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

出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一 个中断打断,从而使得结果发生变化

并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时 候都可以被ISR 打断,一段时间后又可以 运行,但是相应数据不会丢失)。

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

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

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

例如,第一个警告中函数WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51 被定义,

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

服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C 中。 解决方法:

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

如果该函数占用了内存,则应该使用连接器(linker)OVERLAY 指令将函数从覆盖分析 (overlay analysis)中除去,例如:

C语言编译错误总结(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/605678.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)