当前位置: 技术问答>linux和unix
使用Linux下gcc编译,出现ISO C++ forbids assignment of arrays错误
来源: 互联网 发布时间:2016-03-24
本文导语: reportset.BeginDate=reportset.EndDate=Date; 这里的reportset为一个结构类型,BeginDate、EndDate都是char 型:char BeginDate[15];char EndDate[15]; Date是char Date[15]; gcc时报错ISO C++ forbids assignment of arrays 我已经知道这句代码在新的ISO C...
reportset.BeginDate=reportset.EndDate=Date;
这里的reportset为一个结构类型,BeginDate、EndDate都是char 型:char BeginDate[15];char EndDate[15];
Date是char Date[15];
gcc时报错ISO C++ forbids assignment of arrays
我已经知道这句代码在新的ISO C中是不符合要求的。我想问一下,如果能这样赋值,那么reportset.BeginDate、reportset.EndDate、Date是不是都成为指向Date数组的指针?如果是,应该如何正确的进行数组名指针的赋值?
这里的reportset为一个结构类型,BeginDate、EndDate都是char 型:char BeginDate[15];char EndDate[15];
Date是char Date[15];
gcc时报错ISO C++ forbids assignment of arrays
我已经知道这句代码在新的ISO C中是不符合要求的。我想问一下,如果能这样赋值,那么reportset.BeginDate、reportset.EndDate、Date是不是都成为指向Date数组的指针?如果是,应该如何正确的进行数组名指针的赋值?
|
数组不是指针,怎么能这样用,把BeginDate和EndDate改为char *就可以。如果是数组的话只能进行内存数组的拷贝
|
数组有空间, 需要strcpy或memcpy设值.
|
strcpy(reportset.BeginDate,Date);
strcpy(reportset.EndDate,Date);
strcpy(reportset.EndDate,Date);
|
怎么会有这种代码呢?
其实也很好解决。用一个结构把结构封装起来就可以了.
[code=C/C++]
typedef struct _DATE {
char date[15];
} DATE;
typedef struct _REPORTSET {
DATE BeginDate;
DATE EndDate;
} REPORTSET;
这样就可以赋值了.