[elektro] C kérdés
Papp Zoltán
zombi at c2.hu
Thu Jan 31 22:25:20 CET 2008
2008.01.31. 16:33:53 dátumon Moczik Gabor <pm_levlista at progzmaster.hu>
írta:
> Hofferek Attila wrote:
>> #define mUSBGetHIDDscAdr(ptr) { if(usb_active_cfg == 1) ptr = (rom
>> byte*)&cfg01.hid_i00a00; }
>>
>> (az egész egy sorban) ...bár nem fogom fel miért nem fordul több sorra
>> bontva.
>
> Azert, mert a makro-kat a sorvege jel hatarolja, nem lehet tobbsoros
> makrot irni.
Így van, a \ jel meg megmondja a fordítónak, hogy a köv. sorban
folytatódik a makró.
Normál programsornál ugye a ; (vagy egyéb tesója) a határolójel
Rakhatod egy 200 karakteres sorba is, csak úgy átláthatatlan.
Ajánlom mindenki figyelmébe "Andrew Koenig: C csapdák és buktatók" c.
könyvét, érdekes és tanulságos olvasmány.
http://www.kiskapu.hu/index.php?BODY=BookInfo&OP=details&ID=60294
Annyi, mint drágább helyen egy pizza, most kicsit kevesebb, mint 2000Ft
(netről rendelve), szerintem ennyit bőven megér.
Ilyen "állatok" is vannak benne pl.:
(*(void(*)())0)();
Ez gyakorlatilag egy JMP 0 utasítás, azaz a legtöbb uC-n egy RESET :-)
Lehet elemezni. A könyvben benne van a megoldás.
Aztán van benne olyasmi is, hogy miért jobb az "if(a==7)" utasítás helyett
pl. "if(7==a)" alakot használni.
A kedvencem: ha van egy x[] tömbünk, akkor tulajdonképpen az 'x'-t a
fordító mutatóként kezeli, így az:
i=x[3] megegyzik az i=*(x+3) kifejezéssel, ami megegyezik az i=*(3+x)
kifejezéssel, ami így is írható: i=3[x]
És tényleg működik :-)
Meg pl.: gépfüggetlen dec -> hex átalakítás:
hex="0123456789ABCDEF"[dec%16] (bámilyen kódtáblával működik).
Sok dolog egyértelmű benne, sok nem az, de ad egy pici szemléletet az
embernek, amivel tényleg programozni lehet tanulni és nem a nyelv alapjait.
Üdv
--
Papp Zoltán
OneWay Electronics - www.onewayelectronics.hu
Hangszerviz - www.hangszerviz.hu
More information about the Elektro
mailing list