C - pretypovani pointeru

moje moje na vabo.cz
Pondělí Březen 14 12:04:31 CET 2005


> potreboval bych vyresit takovy kosmeticky problem - jak ciste napsat
> pretypovani integeru na pointer, aniz by gcc nadavalo, ze to ma jinou
> velikost:
> 
> mam nejakou funkci (callback), kteremu jako parametr jde dat void *,
> a kdyz si ten callback registruju, tak zaroven dam parametr, s jakym
> parametrem se ma volat. Cili neco jako
> 
> typedef void callback_t(void *);
> 
> int register_callback(callback_t, void *);
> 
> void my_callback(void *arg)
> {
> 	int fd = (int)arg;   /* 1 */
> 	...
> 	close(fd);
> }
> ...
> main() {
> 
> 	int fd = open(....);
> 
> 	register_callback(my_callback, (void *)fd); /* 2 */
> 	...
> }
> 

Neni tam nahodou prilis casto michani pointeru a intu ?
Ja z toho mam takovy nestastny pocit.
Co to udelat takhle:
(ono pretypovavat int primo na void a zpatky neni prilis pekne)

typedef void callback_t(void *);

int register_callback(callback_t, void *);

void my_callback(void *arg)
{
                int fd = ((int*)arg)[0];   /* 1 */
                close(fd);
}

int main(int argc, char **argv) {
        int fd = open("test",'r');
        register_callback(my_callback, (void *)&fd); /* 2 */
}

MOJE


-- 
Konir Tomas
Czech Republic
Brno
ICQ 25849167




Další informace o konferenci Linux