Fejlődik a C, avagy struktúrák másolása
Adhattam volna címnek azt is hogy „újszülöttnek minden vicc új”, vagy hogy „ma is tanultam valamit”...
A lényeg ez a titokzatos sor (én írtam):
//tokencopy(f,g,g+1);
f->T[g]=f->T[g+1];
Mármint, ugye nem 1 hanem 2 sor. Ezek egy általam írt programban vagynak benne (a legújabb programnyelvemről van szó de tökmindegy). Előbb azt a sort tettem csak bele ami itt ki van kommentezve. Ez ugye egy (globális)függvény, ami annyit csinál, hogy egy struktúrákat tartalmazó tömb 2 elemét átmásolja, a g+1 -ediket a g-edik elembe, annak régi tartalmát felülírva. (Az "f" is egy struktúra amúgy, de most nem arról van szó, hanem a T tömbről aminek az elemei struktúrák maguk is). Persze senki ne gondoljon olyan böszmeségre, hogy a struktúra minden mezőjét külön másolom, csináltam 2 pointert mindegyik struktúra kezdetére mutatva, majd castoltam őket unsigned long long * típusúra, aztán egy ciklussal át lett másolva minden unsigned long long érték, a ciklus addig ment amennyi a struktúrám sizeof() értéke... Így jó lesz akkor is ha a struktúra mérete megváltozik. Arra kell csak ügyelnem, a mérete mindig az unsigned long long méretének többszöröse legyen.
Na de ez majdnem mellékes volt. A lényeg tehát hogy ezt a függvényt megírtam, amikor jött egy fura ötletem. Az, amiért kikommenteztem a tokencopy sort ami meghívná a függvényemet s leírtam helyette az alatta levő sort. Mert hátha van már olyan okos a C nyelv hogy képes ő maga is struktúrákat másolni... Tudtam ugyan, az eredeti Kernighan/Ritchie könyv szerint struktúrák esetén az egyetlen művelet a pointerük képzése, de a C++ esetén már rég úgy van (amennyire tudom legalábbis) hogy képes a struktúrák másolására. Gondoltam, hátha ezt az okosságot átemelték már a C nyelvbe is azóta!
És voila, behold meg hasonlók - simán lefordult a programom így is, még csak nem is warningolt!
Lehet hogy most megkapom a trolloktól a kiosztást hogy ez ilyen meg olyan ősrégi feature már, miért is nem tudtam róla korábban... Hja, kérem, nekem senki nem oktatta a progranyozást főiskolán, magam tanultam, És az eredeti Kernighan könyvből. Az, hm, talán mégse a legújabb verziója a C nyelvnek... Szóval, ezt most fedeztem fel és kész... De örülök neki! Nagyon jó kis feature.
Jó pap holtig tanul ugye. Sőt még az is aki nem pap.
- Tovább (Fejlődik a C, avagy struktúrák másolása)