problem z C



Masz problem? Zapytaj na forum elektroda.pl

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




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



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


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



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



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