elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Cómo hago para crear una funcion que al usarla cree otra?.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo hago para crear una funcion que al usarla cree otra?.  (Leído 3,265 veces)
josue9243

Desconectado Desconectado

Mensajes: 67


Ver Perfil
¿Cómo hago para crear una funcion que al usarla cree otra?.
« en: 3 Noviembre 2017, 17:41 pm »

Como hago tipo, pongo en .h esto:

Código:
int Function( int a )
{
         return a+5;
}

y Cada vez que lo utilize en un .cpp o en cualquier lado se cree una funcion con eso.

PERO NO INSERTARLO CORTE INLINE, sino que como que copia la funcion y la clona SÓLO PARA ESE USO EJEMPLO:

Código:
int roberto( int hola, int param )
{
          int a, b, c, d (?
          Function( 4 );
         blabla...
          Function( a + 10 );
}

y para cada vez que uso Function se clona sólo para ese uso en este caso se clona 2 veces.

Habia un XorStr de 007 Boy Scout que hacia eso con xorstr.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ¿Cómo hago para crear una funcion que al usarla cree otra?.
« Respuesta #1 en: 4 Noviembre 2017, 00:00 am »

La idea de una función es reutilizarla. ¿Por qué "clonarla"?
¿Hablas de tener otra función en memoria idéntica por cada uso?

¿Por qué necesitas esto?


En línea

josue9243

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: ¿Cómo hago para crear una funcion que al usarla cree otra?.
« Respuesta #2 en: 4 Noviembre 2017, 00:45 am »

La idea de una función es reutilizarla. ¿Por qué "clonarla"?
¿Hablas de tener otra función en memoria idéntica por cada uso?

¿Por qué necesitas esto?

¿Porque tanta curiosidad? :v jajaja

Necesito eso porque si en IDA Pro algun vivo me reemplaza

sub_12933942 por CortarPapas();

se reemplaza en TODO el programa, entonces si hago que CortarPapas(); cada vez que lo utilizo se duplique clone o como quieran decirle.

entonces aparece

sub_239429349
sub_283474574
sub_192392939

:p xD
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: ¿Cómo hago para crear una funcion que al usarla cree otra?.
« Respuesta #3 en: 4 Noviembre 2017, 10:56 am »

Se me ocurre una manera de hacerlo, pero no es tan directo como llegar e invocar una funcion. En C++, los templates generan codigo y cada especializacion es codigo distinto.
De esta manera, basta que uses una especializacion cada vez que invocas la funcion.

Ejemplo:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <int N> void myfunc1() {  cout << N << endl; }
  5.  
  6. template <int N> void myfunc2() {  cout << "No me importa el valor de N" << endl;  }
  7.  
  8. int main()
  9. {
  10.    // Invocar una funcion a la que le interesa usar el valor explicito
  11.    // todas las funciones son distintas
  12.    myfunc1<1>();
  13.    myfunc1<456>();
  14.  
  15.    // Invocar una funcion en que el parametro del template se ignora
  16.    myfunc2<1234>();
  17.  
  18.    return 0;
  19. }
  20.  

Puedes ver este codigo ejecutandose en este link:  http://goo.gl/x3aJ9X

No puedes usar variables como parametro de la especializacion. Solo constantes explicitas.

En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
josue9243

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: ¿Cómo hago para crear una funcion que al usarla cree otra?.
« Respuesta #4 en: 4 Noviembre 2017, 15:23 pm »

Jajaja si es igual que el otro código, y si se pueden usar parametros porque el XorStr del otro lo utiliza xD.

XorStr< int a1, int a2, int a3>XorStr( string );
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: ¿Cómo hago para crear una funcion que al usarla cree otra?.
« Respuesta #5 en: 4 Noviembre 2017, 16:16 pm »

No dije que no se pueden usar parámetros.
Dije que no se pueden usar variables como parámetros de la especialización.

Vale decir, no puedes usar

mifunc<i>()

Solo puedes usar constantes, como en el ejemplo que mande

Yo no tengo a la vista el xorstr que mencionas.
« Última modificación: 4 Noviembre 2017, 18:01 pm por CalgaryCorpus » En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
josue9243

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: ¿Cómo hago para crear una funcion que al usarla cree otra?.
« Respuesta #6 en: 4 Noviembre 2017, 16:19 pm »

Gracias!, funciona d10.

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar nombre de funcion como parametro de otra funcion en java
Java
xGisKaRDx 3 10,324 Último mensaje 1 Agosto 2014, 23:27 pm
por jhonatanAsm
La app para presentar el IRPF,disponible a partir de este jueves:¿cómo usarla..
Noticias
wolfbcn 0 1,629 Último mensaje 14 Marzo 2018, 21:40 pm
por wolfbcn
no se como crear la funcion BOOL
Programación C/C++
lokiam14 0 1,424 Último mensaje 25 Junio 2018, 03:33 am
por lokiam14
Qué es la regla 52/17 y cómo puedes usarla para ser más productivo
Noticias
wolfbcn 0 2,459 Último mensaje 17 Octubre 2019, 22:11 pm
por wolfbcn
¿Cómo crear una función?
Programación C/C++
SergioT 5 3,158 Último mensaje 26 Noviembre 2020, 16:49 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines