打印

请教一个问题:如图,谢谢:)

[复制链接]
3745|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsw_21|  楼主 | 2009-11-4 19:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


这个可能是什么原因导致的呢?谢谢!
沙发
yewuyi| | 2009-11-4 21:39 | 只看该作者
具体情况不太清楚,但估计大家都经常遇到过,重新编译一次就OK了,猜测原因可能是:
PICC编译器编译后生成的OBJ文件等都是带有路径信息的,如果你改变了文件夹名字或者文件名字等,一般再次打开工程后第一次编译都会出现这个问题,此时大概是编译器检测到变动并提示一个警告。
如果可以再次编译成功,我一般都不理会他 。

使用特权

评论回复
板凳
hsw_21|  楼主 | 2009-11-5 10:08 | 只看该作者
谢谢叶公!:)
叶公:
我在调试时,还发现一个有趣现象:
  在Debugger状态编译时,这样的警告很多;
  但在Programmer状态编译时,这样的警告就减少为一个或者没有了。

使用特权

评论回复
地板
yewuyi| | 2009-11-5 11:47 | 只看该作者
也可以理解,debug的时候要生成很多中间文件用于调试时用,但PROGRAM的时候,只需要编译生成HEX就可以了,所以DEBUG的时候对不上的文件数量就多了很多

使用特权

评论回复
5
大碗拉面| | 2009-11-6 13:45 | 只看该作者
学习:D

使用特权

评论回复
6
21cnxin| | 2009-11-7 21:46 | 只看该作者
有很多时候都是软件问题

使用特权

评论回复
7
兰天白云| | 2009-11-9 08:15 | 只看该作者
堆栈覆盖?

使用特权

评论回复
8
dhjlh| | 2009-11-9 16:27 | 只看该作者
楼主嵌套的函数太多了吧,编译器警告或许会堆栈溢出

使用特权

评论回复
9
hsw_21|  楼主 | 2009-11-16 12:58 | 只看该作者
编译过程中有这么一个警告,暂时不知道如何处理她,留着她会不会 有后患?

HI-TECH C PRO for the PIC10/12/16 MCU family (Lite)  V9.65PL1
Copyright (C) 1984-2009 HI-TECH SOFTWARE
(1273) Omniscient Code Generation not available in Lite mode (warning)
Warning [1258] E:\AOS_ESM\ESM_SW\code\c\HT1621B.c; 22. possible stack overflow when calling function "_SendBit_1621"

使用特权

评论回复
10
yewuyi| | 2009-11-16 13:12 | 只看该作者
根据我以往的经验,一定有后患,而且无穷。。。

使用特权

评论回复
11
hsw_21|  楼主 | 2009-11-17 10:56 | 只看该作者
谢谢叶公,看来要努力排除。

使用特权

评论回复
12
hsw_21|  楼主 | 2009-11-17 19:09 | 只看该作者
This one is an error again:
(482) symbol "_Alm1Mins" is defined more than once in "I2C.obj"
--------------------------------------------------------------------------------------

Like the heading says another learning problem, so please bare with me.

This is the first time I have written large amounts of code in C, so I am sure a lot of the problems I get are down to that.

This one is an error again:
(482) symbol "_Alm1Mins" is defined more than once in "I2C.obj"
A whole list of these with different variable names

I have created a single header file for all the hardware side addressing of I2C devices, however since the program consists of a large number of seperate source and header files, I place the reference to each header used in the appropriate C file.
ie #include "initCPU.h"

The problem I think is that because I now have multiple references to the header file in different source files the compiler gets messed up.

How do I avoid this.

这个错误怎么处理好呢?

使用特权

评论回复
13
hsw_21|  楼主 | 2009-11-18 20:10 | 只看该作者

查到这个原因,但问题还没解决,请教叶公。

本帖最后由 hsw_21 于 2009-11-18 20:11 编辑

使用特权

评论回复
14
yewuyi| | 2009-11-18 20:43 | 只看该作者
呵呵,干瞪眼,帮不上忙。。。

俺从来没有遇到这样的问题,说实话,俺写代码的时候遇到最多的问题就是少了分号或者少了括号,其次就是打错了变量名,嘿嘿,各位遇到的希奇古怪的问题,俺没有那么好的命遇到。。。

用最安全的代码写法实现最安全的编译,简单明了是我的目标,各位追求的各种‘技术’手段,可能俺看都不看,想都不想,当然,也可能是,看也看不懂拉。。。

使用特权

评论回复
15
hsw_21|  楼主 | 2009-11-19 09:25 | 只看该作者
谢谢叶公,还有一个问题请教您:仿真的时候怎么能知道 堆栈溢出 ?
MPLAB
view-Hardware Stack 这个监控窗口怎么使用?在调试中有什么监控作用?

使用特权

评论回复
16
yewuyi| | 2009-11-19 10:43 | 只看该作者
你的代码需要调用多深,有多少东西可能被压栈,这些根本不需要看,STACK窗口对于我来说,没有用,如果你不知道要开销多少堆栈,这样的代码就暂时别写了,好好思考清楚再打那些代码。
软仿真对于我最大的作用就是:可以向某个寄存器送入一个激励值,通过各种激励值来发现代码的效率不足或者错误等等。
写代码不仅仅是写,写是思考的结果,没有思考的写就是瞎写,个人建议这样的代码暂时停下来别写,某些人宣称他能写多大多大的代码量,屁用也没有,写100K的NOP,等于屁都不是。。。

使用特权

评论回复
17
hsw_21|  楼主 | 2009-11-19 18:50 | 只看该作者
嗯,谢谢叶公,我思考思考。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

418

主题

2675

帖子

1

粉丝