[elektro] C aritmetika értetlenség

Móczik Gábor pm_levlista at progzmaster.hu
Fri Dec 27 23:13:54 CET 2013


2013.12.26. 18:36 keltezéssel, Skandar Graun írta:
> huzo_1_pos = ((long*)&sbuffer[3])[0] & 0xFFFFFF
>
> Ez lett az első bemásolt és működik.
> Köszönöm. Valahol én is a castolásra gyanakodtam, csak nem volt konkrét
> ötletem. A shiftelést próbáltam, ott ki is kergette belőle az adatot, ott
> is castolni kell.
> A uC pic18f8722, 40 megán járatva, a feladatra egyébként megfelelne... csak
> a bájtonkénti eléréssel még nem vagyok teljesen rendben. A
> generictypedefs.h ad rá megoldást, csak utána megint olyan hibaüzenetek
> vannak, amikkel még nem küzdök.
> Majd... :)

Cast ne maradjon ki sehonnan, mert tapasztalataim szerint a fordító 
szinte soha nem tudja mit akar az ember. :-)

A fenti kód tökéletes, ha a bejövő adat és a processor endianness 
egyforma. Mivel működik, gondolom jelen esetben igen, csak mondom, hogy 
ezt vedd figyelembe, pláne ha át fogod vinni a kódot máshová.

Érdemes makrókat írni ilyen konverziókra, és akkor csak egy helyen kell 
átírni, ha rendszerváltás van. :-)

Vannak a network stackekben szabványos htons(), ntohs() függvények 
(makrók), ezeket szerintem célszerű ilyen esetekben használni, még ha a 
net stack többi része nem is kell éppen.



More information about the Elektro mailing list