完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我为PIC18F27 K40编程,使用XC8 1.42,MPLAB X 3.61,PICtiT3。错误在上下文中没有多大意义,表现为:修改不同模块中的不相关代码后出现的错误。违规行显示为:从xc8 1.42自述文件中:(1513)指针“*”的目标“*”不在由*(代码生成器)指定的内存空间中。这个赋值可能向与内存空间指定符冲突的指针分配地址。我不理解这个错误意味着什么,任何洞察力/故障排除都是值得赞赏的!
|
|
相关推荐
13个回答
|
|
|
Hiby看起来,指针没有正确初始化。它们看起来指向(null),至少是编译器看到的。
|
|
|
|
|
|
嗯,我决定把变量声明和赋值分开:但是变量声明仍然是令人不快的行。这意味着什么?
|
|
|
|
|
|
HIHY指针位于“Y-RAM”空间,但“GrAMRAMPULL”怎么样?编辑补充:回到你的第一篇文章。你似乎最上面有一个缺失的“;”在评论里看起来它最终被收录了。
|
|
|
|
|
|
它被声明为:我不认为这是问题,其他函数有类似的指针,不会发出错误。WgtDelay的结构是如何抱怨队列成员的呢?它不明白问题是什么。在这个问题之前,我得到的错误是:但是“l_flashData”位于一个完全不相关的模块中,这个函数甚至看不见。(和“LFlash数据”是ROM中的一个常数数组),我决定取出Y-RAM RAM限定符,并编译并正确运行。我只是担心,因为我相信错误是由编译器生成的。好主意,但它实际上是一个函数的开头,我只是不能包括整个函数的源代码。我很烦恼这个函数会发出错误,但它是补充“Ram_Malloc”,它在指针上使用_u ram限定符,根本不发出任何错误。非常感谢您对此的考虑!我真的很感激你的想法!
|
|
|
|
|
|
嗨,这个消息是说你告诉编译器这些指针将只包含RAM中对象的地址,但它已经检测到不在RAM空间中的目标(地址)。冒犯目标的名称已经被打印为空字符串,这表明目标是一个没有可用C标识符的内部对象。该名称不指示空指针;编译器将知道这些地址不指向任何地方。编译器将跟踪所有指针分配,因此除非我们能够确定ptr的目标列表,否则很难说什么会导致该地址和以下行上的消息。在函数RAMYLIVE()中的指针定义和ITSPTR参数是下面使用的相同变量吗?如果是这样,那么函数的所有参数是什么呢?如果你在整理这个问题上有困难,我建议你把展示这个问题的完整项目发给Micro..,并附上你看到的相关细节。
|
|
|
|
|
|
谢谢你,杰夫,这有助于我更好地理解错误信息!我将通过什么来确定目标列表?这些指针定义位于RAMEFILE()内,它的PTR参数与下面使用的变量相同。Ram_Free()只有一个参数:我肯定在解决这个问题时遇到麻烦,临时的修复方法只是取消_ram限定符。我会考虑发送到Microchip的支持。谢谢你的帮助!
|
|
|
|
|
|
为什么需要RAM限定符?编译器将选择正确的大小指针(不确定它是否在空闲模式下,但它将以付费模式)。
|
|
|
|
|
|
我想我不需要RAM限定符,但是从以前的经验我需要ROM的。ram限定符很好地提醒了它存储在哪里(有点像在不是常量的情况下向常量传递指针)。当然,我没有打扰括号的情况,所以我不需要它们。
|
|
|
|
|
|
XC8不需要内存特定指针。您确定它们正在帮助吗?在旧的高科技中,他们有时会帮忙。
|
|
|
|
|
|
程序集列表文件有一个指针引用图(在文件中搜索“Po.List with Targets:”),但是该文件是由汇编程序生成的,所以应用程序必须执行才能看到这个。您可能需要调整代码以使其生成。在
|
|
|
|
|
|
嗯,也许它们不是必要的。在我意识到默认情况下常量指针指的是闪存,而非常量指针指的是ram之前,我有必要这么做。当然,您可以有一个引用ram的常量指针(仅通过使用const in t_ram*),但是由于项目仅由我操作,所以我决定所有ram位置都是非常量的,以确保不会错误地将rom地址分配给ram指针等。程序集列表文件有一个指针引用图(在文件中搜索“Po.List with Targets:”),但是该文件是由汇编程序生成的,所以应用程序必须执行才能看到这个。您可能需要调整代码以使其生成。在
|
|
|
|
|
|
指向const的指针只不过是编译器不会修改指针的目标的保证。它没有说明这些目标的位置。如果希望确保指针不能用于修改目标,则将其作为指向const的指针;如果通过指针进行写操作,则不要使用const。当指针是数组的元素或结构的成员时,事情就变得棘手了。您可能会发现,在此类对象中定义的指针获取未直接指派给指针的目标。以包含指针的相同结构的两个实例为例,这两个成员指针实例具有不同的目标。如果现在有一个指向这种类型的结构的指针,那么可以使用这个指针来访问那些结构实例和那些结构中的指针成员。因此,编译器可以生成代码来通过结构指针解除对结构成员指针的引用,两个结构成员指针的目标是共享的,因此它们对于两个实例都是相同的。我不会太在意追踪每一个目标。杰夫。
|
|
|
|
|
|
在C cost中表示您保证不会更改它。在XC8中,在Flash中放置了一个定义为const的变量。您不必担心指针指向的是什么,即Jeff的作业。如果您认为指针会使代码更快,那么您可以告诉编译器指针只用于一件事情或者更小,需要这个。另一方面,你正在做自己的额外工作。指向const的指针可以用于RAM或闪存。它保持C的意思。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1121浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:56 , Processed in 0.987959 second(s), Total 96, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1533