[elektro] C sprintf

Skandar Graun sgraun at gmail.com
Fri Dec 14 14:25:20 CET 2012


Bejött a %8lx formátum, köszönet érte.

C30, pic24f procival.
a microchip saját applikációjából. :DDD
Én is hülyét kaptam, amikor megláttam a BYTE, WORD és DWORD változókat
a fejlécekben...

SZIGETI Szabolcs <szigiszabolcs at gmail.com> írta (2012. december 14. 14:21):
> Hali!
>
> Jesszus, ez valami nagy bűvölet. Ezekkel lehet nagyot szopni. gyanítom a
> DWORD_VAL valami elfajzott struct/union lehet, amit ráfektetve a dwordre
> egyeben valami char tömbként is el lehet érni és kiberhelni az egyes
> részeket. Ez milyen környezet?
> Én simán kimaszkolnám az alsó meg a felső intet: (int)(address & 0xffff)
> megadja a felsőt, (int)(address>>16)&0xffff) meg az alsót. Esetleg unsigned
> int.Vagy valmi hasonló.
>
> Szabolcs
>
>
>
> 2012. december 14. 14:14 Skandar Graun írta, <sgraun at gmail.com>:
>
>> Ezt tettem, köszi.
>> Bár nekem egy DWORD_VAL függvény byte-ra szedte szét.
>> Ez a sor:
>>
>> sprintf(uart_x, "%2x",  (((DWORD_VAL) address).v[1]));
>>
>> Hogy lehet paraméterezni, hogy int-re szedjen? A .v kitételt nem
>> tudtam kihámozni.
>>
>> SZIGETI Szabolcs <szigiszabolcs at gmail.com> írta (2012. december 14.
>> 13:57):
>> > Hali!
>> >
>> > Az x formatum az unsigned int-et kíván (legalább is szabvány C-ben). Ez a
>> > DWORD-el nem nagyon fog összejönni, akármekkora mezőszélességet is írsz
>> > oda, lévén az az adat típusát nem változtatja meg, csak azt, hogy mekkora
>> > helyere írja ki. De legalább a fordító jó fej, mert felismeri, hogy a
>> > printf nem mindennapi függvény, és szól érte (régebbi fordítók nem
>> > csinálták ezt, ott sokkal nagyobbat lehetett szívni ilyenkor). Az, meg
>> hogy
>> > nem működik, az elég természetes ilyen esetben, bár szintaktikailag
>> helyes
>> > (ezért csak warning), de rossz paramétert kap a printf.
>> >
>> > Például szedd szét két intre és két egymás meletti %x%x-szel írasd ki.
>> >
>> > Szabolcs
>> >
>> >
>> >
>> > 2012. december 14. 13:33 Skandar Graun írta, <sgraun at gmail.com>:
>> >
>> >> Sziasztok!
>> >>
>> >> A "     sprintf(uart_x, "%8x - ",       address);"
>> >> sorra folyamatosan a:" format '%8x' expects type 'unsigned int', but
>> >> argument 3 has type 'DWORD'
>> >> hibaüzenetet adja.
>> >> Az address egy függvény bemenő adata:
>> >>
>> >> void            DumpSerialEEP(int volume, DWORD address)
>> >>
>> >> A formázást egész 16-ig módosítgattam... nem sikerült kivédeni a
>> >> hibaüzenetet.
>> >> Hiába warning, az utasítást nem hajtja végre...
>> >>
>> >> Lehet, hogy az sprintf csak int-re műxik? Bár ezt sehol nem láttam
>> leírva.
>> >>
>> >> -----------------------------------------
>> >>           elektro[-flame|-etc]
>> >>
>> > -----------------------------------------
>> >           elektro[-flame|-etc]
>>
>> -----------------------------------------
>>           elektro[-flame|-etc]
>>
> -----------------------------------------
>           elektro[-flame|-etc]



More information about the Elektro mailing list