problem z C
Masz problem? Zapytaj na forum elektroda.pl
From: "KS" <pokajok_at_nospam_interia.pl>
Subject: problem z C
Date: Thu, 27 Jan 2005 07:39:14 +0100
Witam,
W prgramie w C Keil na 51 umieszczam zamiennie ponizej przedstawione linie
1)
wskaznik=&Limits[0].SensorsOnOff;
*wskaznik=6;
2)
Limits[0].SensorsOnOff=6;
Obie te instrukcje 1 i 2 dają inny efekt, a chyba powinny dac taki sam.
zmienna "wskaznik" zadeklarowana jest następująco:
int xdata *wskaznik;
deklaracja struktury wygląda następująco:
struct Granice{
unsigned int UA;
unsigned int DA;
unsigned int UB;
unsigned int DB;
unsigned int UC;
unsigned int DC;
unsigned int UD;
unsigned int DD;
unsigned char DwuStanZad;
unsigned char SensorsOnOff;
unsigned char rezerwa;
}Limits[8] at 0x0060;
Co jest nie tak?
Pozdrawiam
KS
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: problem z C
Date: Thu, 27 Jan 2005 09:47:29 +0100
Obie te instrukcje 1 i 2 dają inny efekt, a chyba powinny dac taki sam.
zmienna "wskaznik" zadeklarowana jest następująco:
int xdata *wskaznik;
Cos mi tu nie pasuje. Czemu wskaznik typu int, skoro SensorsOnOff jest typu
char?
Czy dostep do UA ...DD jest OK?
peters
From: Piotr Chmiel <piotr_at_nospam_topaz.zsel.lublin.pl>
Subject: Re: problem z C
Date: Thu, 27 Jan 2005 10:03:41 +0100
On Thu, 27 Jan 2005, KS wrote:
W prgramie w C Keil na 51 umieszczam zamiennie ponizej przedstawione lini=
e
1)
wskaznik=3D&Limits[0].SensorsOnOff;
*wskaznik=3D6;
2)
Limits[0].SensorsOnOff=3D6;
Obie te instrukcje 1 i 2 daj=B1 inny efekt, a chyba powinny dac taki sam.
zmienna "wskaznik" zadeklarowana jest nast=EApuj=B1co:
int xdata *wskaznik;
skoro wskazujesz na elementy struktury to zadeklaruj wska=BCnik do
struktury:
struct Granice *wskaznik;
wskaznik =3D &Limits[0];
wskaznk->SensorsOnOff=3D6;
From: "swiniaczek" <swiniaczek_at_nospam_buziaczek.pl>
Subject: Re: problem z C
Date: Thu, 27 Jan 2005 12:19:03 +0100
Nie wiem jak w Keil C, ale np. w CodeVisionAVR efekt jednakowy.
swiniaczek
From: "Krzysztof Rudnik" <rudnik_at_nospam_kki.net.pl>
Subject: Re: problem z C
Date: Thu, 27 Jan 2005 12:58:53 +0100
Użytkownik "KS" <pokajok_at_nospam_interia.pl> napisał w wiadomości
news:cta2ah$jl6$1_at_nospam_news.dialog.net.pl...
Witam,
W prgramie w C Keil na 51 umieszczam zamiennie ponizej przedstawione linie
1)
wskaznik=&Limits[0].SensorsOnOff;
*wskaznik=6;
2)
Limits[0].SensorsOnOff=6;
Obie te instrukcje 1 i 2 dają inny efekt, a chyba powinny dac taki sam.
zmienna "wskaznik" zadeklarowana jest następująco:
int xdata *wskaznik;
wskaznik jest int * czyli na 2 lub 4 bajtowa wartosc
Zapisujac pod taki wskaznik zapisujesz 2 lub 4 kolejne bajty.
W ktory trafi ta 6-tka zalezy od endianu.
W ogole jakim cudem kompilator przepuscil cos takiego.
Co to za cudo? Assembler o skladni C?
Krzysiek Rudnik
From: Wojtek Kaniewski <wojtekka_at_nospam_SPAM.SPAM.SPAM>
Subject: Re: problem z C
Date: Thu, 27 Jan 2005 17:00:28 +0100
Krzysztof Rudnik wrote:
W ogole jakim cudem kompilator przepuscil cos takiego.
Co to za cudo? Assembler o skladni C?
każdy przepuści. to nie C++, żeby typy musiały się zgadzać. co najwyżej
te bardziej kulturalne wyrzucą ostrzeżenie.
w.