#define offsetof(t, d) __builtin_offsetof(t, d)
[/code]
Namostan mi a jófene ez? A kőbaltás ember kora óta jó volt nekünk az, hogy
#define offsetof(T,F) ((size_t)((char *)&(((T *)0)->F)))
No igen, de valaki észrevette, hogy vannak a múzeumban olyan architektúrák, amiken a nulla konstans (illetve nulla értékű konstans integer kifejezés) pointerként értve nem csupa nulla bit, hanem valami más. Lehet akár 0xc1cababa. Mi a megfejtés? Nyilván nem az, hogy ezeken a platformokon így változtatunk (mármint, ha a múzeumi őr egyáltalán a kérdéses készülék közelébe enged):
#define offsetof(T,F) ((size_t)(((char *)&(((T *)0)->F))-((char *)(T *)0))
Nem, a megfejtés egy __builtin_offsetof létehozása. Ami csak kicsit tud kevesebbet, mint a korábbi megoldás, de azt is megoldja nekünk a clang, feltéve, hogy megsimogatjuk az okos buksiját Milyen ügyes vagy, hogy ilyen extended-et is tudsz!
(Megjegyzés: a sizeof gondjai akkor kezdtek el sokasodni, amikor ifjabb Vér István kérésére megjelentek a VLA-k. No meg a C++ -ban az operator& bár annak tényleg semmi köze nem kellene legyen a C-hez.)
- NevemTeve blogja
- A hozzászóláshoz be kell jelentkezni
- 1216 megtekintés
Hozzászólások
Köszönet! :)
- A hozzászóláshoz be kell jelentkezni
Erről jut eszembe, valaki linkelt egyszer egy előadást fordító-optimalizálás témakörben, ha jól emlékszem egy magyar előadó volt, de arra már nem emlékszem, hogy magyarul vagy angolul adott elő. Néhány C-ben írt példát hozott fel, megmutatta, milyen kódot generál belőlük a fordító (gcc, talán más is, erre már nem emlékszem), és az üzenet kb. az volt, hogy nem nagyon érdemes kódban okoskodni, mert elég okosak a fordítók. Ha esetleg megvan ez valakinek, a linket megköszönném.
- A hozzászóláshoz be kell jelentkezni
Na igen, érdemesebb az átláthatóságra gyúrni, az optimalizálást meg meghagyni a fordítónak.
- A hozzászóláshoz be kell jelentkezni
esetleg: https://www.youtube.com/watch?v=BKQ0PxWhqdI
egy rövid leírás Czirkos Zolitól is van erre: https://infoc.eet.bme.hu/xor_csere/
--
blogom
- A hozzászóláshoz be kell jelentkezni
Ez volt az, köszönöm!
- A hozzászóláshoz be kell jelentkezni
Bmark
- A hozzászóláshoz be kell jelentkezni
néha korlátozzák a hozzáférést, de csak ideiglenesen (amíg egy-egy zéhá tart)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
sub
-----
„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…
- A hozzászóláshoz be kell jelentkezni