打印

大家用的都是什么C编译器啊

[复制链接]
7822|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chongren|  楼主 | 2011-6-17 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于18f系列的,我用的是picc18,9.66版本,不知道是什么原因,出了一个错误,整了一个下午都没有成功。。。也请别人看过了,可是还是无法解决,郁闷了。。。
沙发
JayGong| | 2011-6-18 07:25 | 只看该作者
我用9.80

使用特权

评论回复
板凳
yewuyi| | 2011-6-18 08:56 | 只看该作者
给出错误提示和测试代码包

使用特权

评论回复
地板
chongren|  楼主 | 2011-6-18 12:25 | 只看该作者
#include        <string.h>

#ifdef _PIC16
far void *
memcpy(far void * d1, const void * s1, register size_t n)
#else /*  _PIC16 */
void *
memcpy(void * d1, const void * s1, register size_t n)
#endif /* _PIC16 */
{

#ifdef _PIC16
        register far char *        d;
#else  /* _PIC16 */
        register char *                d;
#endif /* _PIC16 */
        register const char *        s;

        s = s1;
        d = d1;
        while(n--)
                *d++ = *s++;
        return d1;

}

Error   [1098] C:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\sources\memcpy.c; 10. conflicting declarations for variable "_memcpy" (C:\Users\chongren\Desktop\PIC16F628A\Keygen.c:46)
报错的显示是就是上面那段程序。。。不知道咋整。。。。上面这段程序是库里面的吧,说冲突了,可是那个—memcpy我并没有定义啊。。真心不知道怎么办了

使用特权

评论回复
5
yewuyi| | 2011-6-18 13:27 | 只看该作者
你认为#ifdef 等宏指令用对了吗?

你见过谁写这样的代码?
#ifdef _PIC16
far void *
memcpy(far void * d1, const void * s1, register size_t n)
#else /*  _PIC16 */
void *
memcpy(void * d1, const void * s1, register size_t n)
#endif /* _PIC16 */
{
}

使用特权

评论回复
6
chongren|  楼主 | 2011-6-18 14:16 | 只看该作者
5# yewuyi
这不是我写的,这是string这个头文件里的。。。。这个是库函数吧?

使用特权

评论回复
7
yewuyi| | 2011-6-18 14:29 | 只看该作者
5# yewuyi
这不是我写的,这是string这个头文件里的。。。。这个是库函数吧?
chongren 发表于 2011-6-18 14:16


SORRY,看错了。

使用特权

评论回复
8
yewuyi| | 2011-6-18 14:32 | 只看该作者
看了一下的报错信息:conflicting declarations for variable "_memcpy"

可能是你的自己的代码中把库函数中的代码拷贝过来后,但又包含了该库函数,造成函数名冲突了。

你可以把以上代码中的函数名memcpy改成memcpy1,然后在程序中所有调用memcpy函数的地方都改成调用memcpy1,然后再编译看看是否可以通过,

使用特权

评论回复
9
chongren|  楼主 | 2011-6-18 16:14 | 只看该作者
8# yewuyi
按你说的修改过了,还是报同样的错误

使用特权

评论回复
10
yewuyi| | 2011-6-18 16:27 | 只看该作者
把这个名字改成别的一个和memcpy不相关的名字编译看看。

另外,先把函数内的代码都删除掉,编译看看结果如何?

你要学会通过屏蔽部分代码来找到错误地方的简单办法。

使用特权

评论回复
11
chongren|  楼主 | 2011-6-18 16:43 | 只看该作者
我把名字换成一个丝毫不相关的名字之后,没有那个错误了,可是新出了错误,囧

#asm
            rlf _aux,w
            rlf _Buffer,f
            rlf _Buffer+1,f
            rlf _Buffer+2,f
            rlf _Buffer+3,F
            #endasm

Error   [876] C:\Users\chongren\Desktop\PIC16F628A\Decrypt.c; 55. syntax error
Error   [876] C:\Users\chongren\Desktop\PIC16F628A\Decrypt.c; 56. syntax error
Error   [876] C:\Users\chongren\Desktop\PIC16F628A\Decrypt.c; 57. syntax error
Error   [876] C:\Users\chongren\Desktop\PIC16F628A\Decrypt.c; 58. syntax error
Error   [876] C:\Users\chongren\Desktop\PIC16F628A\Decrypt.c; 59. syntax error

使用特权

评论回复
12
yewuyi| | 2011-6-18 16:57 | 只看该作者
现在不是你晕,而是俺晕。

你在顶楼写的用了PICC18的编译器,但目前看,你似乎用了PIC16F628A这个型号的MCU。

你编译器选择有没有问题?
另外,既然库函数已经定义了memcpy函数,为何你不直接用?非要自己再去捣着玩?

至于你出于何种想法,又嵌入了一段ASM代码则更加不得而知了,从你最近发的各种帖子看,你目前尚不具备折腾各种复杂技巧的能力,所以尽量别玩各种各样的花活,那可真是:老寿星吃砒霜。

使用特权

评论回复
13
chongren|  楼主 | 2011-6-18 17:06 | 只看该作者
额,是这样的,想把那个628A的芯片程序移植到18f2580上的,所以在建工程的时候,就直接添加了原先用在628A上的程序。。。至于那个汇编的一段,那是所有芯片的一个应用笔记上的,因为是新手么,所以也就不太明白其中的道理,就依葫芦画瓢了。。。

使用特权

评论回复
14
yewuyi| | 2011-6-18 17:40 | 只看该作者
请问16F628A的程序是不是你写的?

使用特权

评论回复
15
chongren|  楼主 | 2011-6-18 18:01 | 只看该作者
14# yewuyi
真心不是。。。我是新来的。。。。

使用特权

评论回复
16
yewuyi| | 2011-6-20 08:39 | 只看该作者
14# yewuyi
真心不是。。。我是新来的。。。。
chongren 发表于 2011-6-18 18:01



晕,那你慢慢折腾吧,这样的话,挖的坑数量和坑曲折度无法估量,俺们撤退。

使用特权

评论回复
17
huangqi412| | 2011-6-20 09:09 | 只看该作者
:dizzy:

使用特权

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

本版积分规则

19

主题

75

帖子

0

粉丝