Jak obejść błąd 'cannot assign values to aggregates' w SDCC przy strukturze sTime?
[Sdcc] Problem jak ominac ?? :(
From: "Lipin" <lipin_at_nospam_usunto.poczta.fm>
Subject: [Sdcc] Problem jak ominac ?? :(
Date: Sat, 13 Mar 2004 13:58:30 +0100
Witam
Maly problem z sdcc jezeli zamieszcze taki oto kod:
typedef struct sTime {
uchar hour;
uchar min;
uchar sec;
} sTime;
void set_time_menu(sTime *time)
{
sTime t;
t = *time; /* to jest ta linia */
}
Wtedy kompilator generuje mi ze w lini ktora jest zaznaczona wypisuje mi
blad:
error: cannot assign values to aggregates
Nie ma kots pomyslu jak to ominac ?? Przechodze z kodu pisanego w gcc a tam
wszystko bylo ok. Prosze o pomoc z pomyslami jak to mozna obejsc.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.silweb.pl!news.onet.pl!not-for-mai
From: "Lipin" <lipin_at_nospam_usunto.poczta.fm>
Subject: Re: [Sdcc] Problem jak ominac ?? :(
Date: Sat, 13 Mar 2004 14:54:09 +0100
void set_time_menu(sTime *time)
{
sTime t;
t = *time; /* to jest ta linia */
}
Wtedy kompilator generuje mi ze w lini ktora jest zaznaczona wypisuje mi
blad:
error: cannot assign values to aggregates
Jak to ominac ??
Dobra udalo sie jakos ominac. Dobrze ze nie mam duzo roznych struktor w
kodzie :).
void copy_ti1_to_ti2(sTime *ti1, sTime *ti2)
{
ti2->hour = ti1->hour;
ti2->min = ti1->min;
ti2->sec = ti1->sec;
}
copy_ti1_to_ti2(time, &t);
Zna moze ktos lepszy sposob ?? Pytam z ciekawosci.
Pozdrawiam Lipin
=======
From: "Marek Dzwonnik" <mdz_at_nospam_WIADOMO_PO_CO_TO.message.pl>
Subject: Re: [Sdcc] Problem jak ominac ?? :(
Date: Sat, 13 Mar 2004 15:36:46 +0100
Użytkownik "Lipin" <lipin_at_nospam_usunto.poczta.fm> napisał w wiadomości
news:c2v3pg$qb1$1_at_nospam_news.onet.pl
Zna moze ktos lepszy sposob ?? Pytam z ciekawosci.
memcpy (wskaźnik, wskaźnik, siezof() )
??
--
Marek Dzwonnik, GG: #2061027 (zwykle jako 'niewidoczny')
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: "Lipin" <lipin_at_nospam_usunto.poczta.fm>
Subject: Re: [Sdcc] Problem jak ominac ?? :(
Date: Sat, 13 Mar 2004 16:35:21 +0100
Zna moze ktos lepszy sposob ?? Pytam z ciekawosci.
memcpy (wskaźnik, wskaźnik, siezof() )
??
Dziekuje :) ze tez na to nie wpadlem wczesniej ale pomysl oczywiscie
najlepszy i juz wykorzystany. Dzieki!!
Pozdrawiam
Lipin
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!pm.waw.pl!wsisiz.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: [Sdcc] Problem jak ominac ?? :(
Date: Sat, 13 Mar 2004 22:13:23 +0100
On Sat, 13 Mar 2004 14:54:09 +0100, Lipin wrote:
void set_time_menu(sTime *time)
{
sTime t;
t = *time; /* to jest ta linia */
}
Wtedy kompilator generuje mi ze w lini ktora jest zaznaczona wypisuje mi
blad:
error: cannot assign values to aggregates
Generalnie prawidlowo - usilujesz przekopiowac dwie struktury,
C tego nie robi.
void copy_ti1_to_ti2(sTime *ti1, sTime *ti2)
{
ti2->hour = ti1->hour;
ti2->min = ti1->min;
ti2->sec = ti1->sec;
}
copy_ti1_to_ti2(time, &t);
Zna moze ktos lepszy sposob ?? Pytam z ciekawosci.
Lepszy ? hm ... ale to sie robi memcopy ..
J.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!pm.waw.pl!wsisiz.edu.pl!newsfeed.gazeta.pl!fu-berlin.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Andy" <anokWYTNIJ_at_nospam_ceti.pl>
Subject: Re: [Sdcc] Problem jak ominac ?? :(
Date: Sun, 14 Mar 2004 06:07:54 +0100
Uzytkownik "J.F." <jfox_nospam_at_nospam_poczta.onet.pl> napisal w wiadomosci
news:dgs650tenbtg2da1jef5ap2kcnfastfc7r_at_nospam_4ax.com...
...
Generalnie prawidlowo - usilujesz przekopiowac dwie struktury,
C tego nie robi.
...
dlaczego ?
przyznam, ze czesto mi sie myli co jest w czystym C a co w C++
ale kopiowanie struktur przez "="
chyba jest w C
w kazdym razie przyklad z posta skompilowny
pod gcc z opcjami: -ansi - pedantic -Wtraditional
nie wywala zadnego bledu ani warninga
--
Andrzej
=======
From: "Marek Dzwonnik" <mdz_at_nospam_WIADOMO_PO_CO_TO.message.pl>
Subject: Re: [Sdcc] Problem jak ominac ?? :(
Date: Sun, 14 Mar 2004 11:28:32 +0100
Użytkownik "Andy" <anokWYTNIJ_at_nospam_ceti.pl> napisał w wiadomości
news:c30p32$imr$1_at_nospam_atlantis.news.tpi.pl
przyznam, ze czesto mi sie myli co jest w czystym C a co w C++
ale kopiowanie struktur przez "="
chyba jest w C
AFAIR dopiero w ANSI-C.
pod gcc z opcjami: -ansi - pedantic -Wtraditional
nie wywala zadnego bledu ani warninga
--
Marek Dzwonnik, GG: #2061027 (zwykle jako 'niewidoczny')
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.mega.net.pl!newsfeed.tpinternet.pl!szmaragd.futuro.pl!opal.futuro.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: [Sdcc] Problem jak ominac ?? :(
Date: Sun, 14 Mar 2004 12:35:55 +0100
On Sun, 14 Mar 2004 06:07:54 +0100, Andy wrote:
Uzytkownik "J.F." <jfox_nospam_at_nospam_poczta.onet.pl> napisal w wiadomosci
...
Generalnie prawidlowo - usilujesz przekopiowac dwie struktury,
C tego nie robi.
...
dlaczego ?
przyznam, ze czesto mi sie myli co jest w czystym C a co w C++
ale kopiowanie struktur przez "=" chyba jest w C
Mnie mowiac szczerze tez sie myli - ale najwyrazniej to jest problemem
-)
J.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!hs001.slackware.pl!new
From: Jan Dubiec <jdx_at_nospam_slackware.pl>
Subject: Re: [Sdcc] Problem jak ominac ?? :(
Date: 13 Mar 2004 16:30:30 +0100
On Sat, 13 Mar 2004 13:58:30 +0100, "Lipin" <lipin_at_nospam_usunto.poczta.fm> wrote:
Witam
Maly problem z sdcc jezeli zamieszcze taki oto kod:
typedef struct sTime {
uchar hour;
uchar min;
uchar sec;
} sTime;
void set_time_menu(sTime *time)
{
sTime t;
t = *time; /* to jest ta linia */
}
Wtedy kompilator generuje mi ze w lini ktora jest zaznaczona wypisuje mi
blad:
error: cannot assign values to aggregates
Nie ma kots pomyslu jak to ominac ?? Przechodze z kodu pisanego w gcc a tam
wszystko bylo ok. Prosze o pomoc z pomyslami jak to mozna obejsc.
Ma:
void set_time_menu(sTime *time)
{
sTime t;
t.hour = time->hour;
t.min = time->min;
t.sec = time->sec;
}
Ewentualnie, tak jak zasuerował M.Dz.:
void set_time_menu(sTime *time) {
sTime t;
memcpy(&t, time, sizeof(sTime));
}
Ale ta pierwsza wersja jest bardziej czytelna i prawdopodobnie
troszeczkę szybsza (jeśli komuś zależy na szybkości).
Regards,
/J.D.
--
Jan Dubiec, jdx_at_nospam_slackware.pl, mobile: +48 602 101787
Głęboka wiara wymaga płytkiego rozumu i nikłej wiedzy.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.man.lodz.pl!news.nask.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai