Jak obejść błąd 'cannot assign values to aggregates' w SDCC przy strukturze sTime?

[Sdcc] Problem jak ominac ?? :(





Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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



=======

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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




=======

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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