打印
[AVR单片机]

请教各位前辈,ICC及GCC中的编译问题

[复制链接]
2971|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
londyly|  楼主 | 2008-7-4 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有程序函数如
void hz_tran(unsigned char x,unsigned char y,unsigned char *hz_p)

调用如hz_tran(3,0,"大家好");

在ICC中编译通过,但在WINAVR中编译时出现如下错误警告
megalcd.c:527: warning:
 pointer targets in passing argument 3 of 'hz_tran' differ in signedness
小弟看了几天,没找出问题所在,请前辈不吝指教。
注:本人用的是WinAVR20071221的版本

相关帖子

沙发
ATmega32L| | 2008-7-4 16:41 | 只看该作者

指针所指的符号不一致

在GCC里,
unsigned char *,signed char *和char *是不同的类型,
如果相互赋值会有警告。

void hz_tran(unsigned char x,unsigned char y,unsigned char *hz_p)
第三个参数类型是unsigned char *

hz_tran(3,0,"大家好");
第三那个参数"大家好"的类型是char *,

把char *转递给unsigned char *,就会产生警告。

使用特权

评论回复
板凳
londyly|  楼主 | 2008-7-4 17:16 | 只看该作者

谢谢

谢谢前辈指点!因为小弟刚接触GCC,所以有点不知所以,谢谢赐教!

使用特权

评论回复
地板
meteor01| | 2008-7-6 00:21 | 只看该作者

正解

使用特权

评论回复
5
londyly|  楼主 | 2008-7-7 10:40 | 只看该作者

继续请教

warning: conflicting types for built-in function 'putchar'
这个错误的意思就是说'putchar'函数跟内建函数有冲突,那如何消除这个冲突?
如果我要用到自己的'putchar'函数,是不是要把内部的'putchar'函数去掉?怎么处理?
请ATmega32L大侠继续指教,谢谢!

使用特权

评论回复
6
yyccaa| | 2008-7-7 11:07 | 只看该作者

.

putchar是stdio.h库文件里定义了的,
#define putchar(__c) fputc(__c, stdout)
因为你include了这个头文件而发生冲突了。
如果你要自己写,要在相关位置#undef掉这个宏。

使用特权

评论回复
7
londyly|  楼主 | 2008-7-7 12:48 | 只看该作者

thanks

谢谢楼上前辈指教!

使用特权

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

本版积分规则

15

主题

55

帖子

0

粉丝