C kerdes

Fuzesi Arnold arnold.fuzesi.lista at gmail.com
Wed Mar 21 23:48:33 CET 2007


Data pointer a stack-en van...joezigy sztem....ha visszater a fuggveny meg 
is semmisul.
Akkor lenne gaz a helyzet sztem, ha pointer-t adnek at // uint 
ee_checksum(uchar __eeprom** data, uint length) //,
es nem cimet... (most csak cimet adok at...)

--

Oke h  akisebbet castolja nagyobbra.
De egy mezei uchar tipusu valtozot ha int-re castolok annak a teteje miota 
lesz szemét (köv memcím...)???
unsigned char bakfitty;
(uint) bakfitty.
Ilyenkor a bakfitty felso byte-ja nehogymar ne 0x00 legyen!!!
Akkor lesz csak a kov memcim, ha ezt csinalom:
((uint*) & bakfitty)[0];

Ezert nem ertem...

Azt sejtem hogy mivel struktura elem a bakfitty, ezert csinal valamiert 
ilyen turpissagot...
ASM-et hiaba nezem, eppen azt latnam amirol most szó van....hogy 
valamiert -sztem- rosszul boviti fel a bakfitty valtozomat integerre.

A.
----- Original Message ----- 
From: "Moczik Gabor" <pm at progzmaster.hu>
To: <elektro at tesla.hu>
Sent: Wednesday, March 21, 2007 11:34 PM
Subject: Re: C kerdes


Fuzesi Arnold wrote:
> uint ee_checksum(uchar __eeprom* data, uint length)
> {
>     uint checksum = 0;
>  do{
>   checksum+=(*data++);
>  }
>  while(--length);
>     return checksum;
> }

A data pointer a fuggveny befejezesevel az utolso utani helyre mutat. Nem
celszeru, mert esetleg okozhat varatlan hibakat...

> Ezt most hirtelen nem ertem....vki erti?
> Most vagy az ee_fw.checksum-ot kellene castolnia magatol uint-re, vagy az
> ee_checksumot castolni uchar-ra..

Szerintem alapbol a kisebbet cast-olja nagyobbra, mert maskepp nem lehet
elvegezni az osszehasonlitast.

Mindenesetre ilyenkor szoktam megnezni a generalt asm list filet, hogy mit
is forditott...

-- 
((( Móczik Gábor  )))--((( pm -> @ -> progzmaster -> . -> hu  )))
((( Skype: moczik )))--((( Website: http://www.progzmaster.hu )))

-----------------------------------------
          elektro[-flame|-etc] 



More information about the Elektro mailing list