Conversão de Tipo

1. Conversão de Tipo

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 31/12/2008 - 02:19h

Olá olá senhores e senhores do VOL :)

Depois de muito tempo afastado das atividades de programação, recorre à vocês para:

Tenho 2 estruturas e 2 funções.

struct mod_t {
...
}

struct list_t{
...
struct mod_t *inicio;
struct mod_t *fim;
}

// variaveis globais
struct list_t *linicio;
struct list_t *lfim;

Bom, o programa gera uma lista encadeada e outras diversas lista encadeadas nos nós de list_t, como podem ver.

Agora, tenho 2 funções

struct list_t *jumpTo (struct list_t *src, unsigned int offset){
struct list_t *aux = str;

... aqui a função ...

return aux;
}

struct mod_t *jumpTo (strurct mod_t *src, unsigned int offset){
struct mod_t *aux = str;

.. aqui a função - o corpo de ambas SÃO EXATAMENTE IGUAIS.

return aux;
}

Bom, minha pergunta para vocês é:
Como posso fazer para transformar as 2 funções em apenas uma?

Deixe-me ser mais claro, existe algum jeito de passar um argumento, ou fazer um #define, para que a função saiba se o argumento src é mod_t ou list_t e retorne mod_t ou list_t, respectivamente.

Espero ter sido claro,
-E. Ferber



  


2. Re: Conversão de Tipo

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 31/12/2008 - 22:05h

defina uma macro e vá jogando com o uso de typeof. algo tipo:




#define jumpTo(src,offset) \
({ typeof(src) aux = src; \
blablabla; \
aux; \
})

note que tecnicamente jumpTo não será mais uma função. quando compilado, cada chamada a jumpTo será expandida para o resultado - que terá o mesmo tipo do argumento src.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts