打印
[ZLG-ARM]

结构体函数问题

[复制链接]
1996|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sgz800|  楼主 | 2007-3-13 10:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在main.c中加入了以下函数:
struct msgTask
{
 unsigned char cnt;
 unsigned char *s;
};

struct msgTask T5mbox={1,"Hello"};
可是ADS中出现以下ERROR
Error   : C3028E: '=': implicit cast of pointer to non-equal pointer
main.c line 35   

D:\EASYARM\OS\uCOS_Example\src\main.c: 0 warnings, 1 error, 0 serious errors

不知怎么回事?

相关帖子

沙发
TRUE_ARM| | 2007-3-13 12:52 | 只看该作者

是想对变量初始化吧?

可能是编译器不支持这样的赋值方式,问题在字符串指针找不到地址。
可以这样:

struct msgTask
{
unsigned char cnt;
unsigned char *s;
};


unsigned char ss[]="Hello";

struct msgTask T5mbox={1,ss};

使用特权

评论回复
板凳
arzhiy| | 2007-3-13 13:04 | 只看该作者

re

我在main.c中加入了以下函数:
struct msgTask
{
unsigned char cnt;
unsigned char *s;    -------------这里要用char
};

使用特权

评论回复
地板
zlgARM| | 2007-3-13 13:42 | 只看该作者

RE

跟编译器的设置有关系。请您看一下ADS的目标设置里的选项。

使用特权

评论回复
5
sgz800|  楼主 | 2007-3-13 18:32 | 只看该作者

我是这样子做的

void main(void)
{
struct msgTask
{
 unsigned char cnt;
 //unsigned char bb[20];
 unsigned char *s;
}T5mbox;
T5mbox.cnt=1;
T5mbox.s=(void *)"hello";
}
不知目标设置是不是DubuginRel setting里的Target setting项中,不知选那一项??

使用特权

评论回复
6
zlgARM| | 2007-3-14 08:21 | 只看该作者

RE

请您参考。

使用特权

评论回复
7
high| | 2007-3-14 22:09 | 只看该作者

提醒

楼上的,你的定义本身是错误的(或者缺陷的)。ads报错在我看来反而是反映态度严谨。

完整的定义
typedef struct _ascii_72 {
    char Index[1];
    char ASCII_Dot[x];     
}ASCII_72;

我想,似乎您对语法有些模糊了。

或者您可以这样更容易理解:
struct _ascii_72 {
    char Index[1];
    char ASCII_Dot[x];     
};
typedef struct _ascii_72 ASCII_72;

使用特权

评论回复
8
high| | 2007-3-14 22:28 | 只看该作者

个人看法,对能报出错误多的编译器持欢迎态度。

1,是某种态度严谨的表现。对于解析模糊的地方报出错误让用户处理,而不是增加容错性,带来也许是巨大的潜在风险。对c语言格外如此。

2, 认真对待每一个warning.提交的代码不允许任何warning.

3, 熟悉编译选项,熟悉ide,最好熟悉make

使用特权

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

本版积分规则

3

主题

25

帖子

0

粉丝