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