Como hago tipo, pongo en .h esto:
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:
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.
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?
Cita de: ivancea96 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?
¿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
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:
#include <iostream>
using namespace std;
template <int N> void myfunc1() { cout << N << endl; }
template <int N> void myfunc2() { cout << "No me importa el valor de N" << endl; }
int main()
{
// Invocar una funcion a la que le interesa usar el valor explicito
// todas las funciones son distintas
myfunc1<1>();
myfunc1<456>();
// Invocar una funcion en que el parametro del template se ignora
myfunc2<1234>();
return 0;
}
Puedes ver este codigo ejecutandose en este link: http://goo.gl/x3aJ9X
No puedes usar variables como parametro de la especializacion. Solo constantes explicitas.
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 );
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.
Gracias!, funciona d10.