打印
[AVR单片机]

挑战新问题了:关于ICCAVR的指针调用问题

[复制链接]
4860|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxy301|  楼主 | 2007-5-14 13:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在遇到这个问题,请各位帮忙看一下,以下的程序是通过移植过来的,在其他编译器没有问题,但是ICCAVR编译出错。

新的问题产生:
这样的调用,大家给看看。
错误提示:
type error in argument 2 to `SendString'; found `pointer to const char' expected `pointer to char'
#define TESTSTRING  "test"

void Send(char * pszString) {
    while(*(pszString)) {
        SendChar0(*(pszString ++));
    }
}

void SendString(char * pszString) {
    Send(pszString);
}

main(){
SendString(TESTSTRING);
}

以上函数的目的是发送一段字符串,通过把字符串地址传递给函数,然后进行发送,但是现在问题是编译不过去,在Softune V3编译通过。

我做过这样的测试:
main(){
char testString[] = TESTSTRING;
SendString(&testString[0]);
}
这样倒是可以了,但是我觉得这样太麻烦了,我需要定义很多常量,必须定义对应数量的数组才可以发送,很是麻烦,谁有更好的方法可以赐教吗,在此谢过。

============================
下面问题已经解决,有兴趣的可以看看原因。
出错信息:
Type error in argument 7 to `GetInfor'; found `pointer to unsigned int' expected `pointer to unsigned char'

程序中,通过nData传递数值给函数,同时把Data1和Data2的地址传递给函数。

//--------------------------------------------------------------------
unsigned char GetInfor(unsigned int nData, unsigned int * pData1, unsigned char * pData2) {
........................

}

main(){
unsigned char ucReturn;
unsigned int nData, nData1, nData2;

ucReturn = GetInfor(10, &nData1, &nData2);

}

上面的问题已经解决了,是我函数中的类型与传递的类型不一致导致。

相关帖子

沙发
xxy301|  楼主 | 2007-5-14 15:02 | 只看该作者

请大侠帮忙啊!!!

使用特权

评论回复
板凳
ayb_ice| | 2007-5-14 16:39 | 只看该作者

随便说说

main(){
unsigned ucReturn;   // 此处应为unsigned char ucReturn;
unsigned int nData, nData1, nData2;

ucReturn = GetInfor(10, &nData1, &nData2);

}

使用特权

评论回复
地板
xxy301|  楼主 | 2007-5-14 18:05 | 只看该作者

打错了,已经修改了,编译的程序没有拉下这个,谢谢提醒

使用特权

评论回复
5
wuha| | 2007-5-15 08:14 | 只看该作者

好像是上面定义的函数行参里的指针应该是字符型吧

我随便猜的

使用特权

评论回复
6
xxy301|  楼主 | 2007-5-15 08:41 | 只看该作者

不是这样的

我要求就是要返回一个数值的,而且这个在富士通单片机编译器Softune V3中就可以编译的过去。

使用特权

评论回复
7
51FLY| | 2007-5-15 12:45 | 只看该作者

ICC不支持这种写法::

不支持  DSP("季度反对法送度斯多夫斯多夫送度");

应写为:
uchar code ss="季度反对法送度斯多夫斯多夫送度";
DSP(ss);

使用特权

评论回复
8
xxy301|  楼主 | 2007-5-15 13:19 | 只看该作者

这样的赋值就无法编译通过

uchar code ss="sss"
我定义成:
unsigned char code ss="sss"
以及
unsigned char ss="sss"
都是编译不过去
不过感谢关注,继续等待解决办法。

使用特权

评论回复
9
dwq175| | 2007-5-15 16:28 | 只看该作者

CONST(flash)指针与RAM指针的问题


void SendString(char * pszString) //此为RAM指针


SendString(TESTSTRING);//此参数为CONST指针

使用特权

评论回复
10
turmary| | 2007-5-16 03:58 | 只看该作者

同意LS的。

使用特权

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

本版积分规则

14

主题

33

帖子

0

粉丝