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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre funciones inline.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre funciones inline.  (Leído 4,314 veces)
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Duda sobre funciones inline.
« en: 28 Marzo 2013, 13:23 pm »

¿Cuándo es mejor usar la funciones inline y cuándo no?
Se usarlas, pero no comprendo muy bien cuando debo usarlas.


En línea

I like to test things.
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Duda sobre funciones inline.
« Respuesta #1 en: 28 Marzo 2013, 15:08 pm »

'inline' es para funciones, se usa en funciones que son redundantes y que se utilizan continuamente, y el efecto que tiene es hacer que el código de la función forme parte de la función en donde se llama, en lugar de que se genere un CALL a ella.

No siempre que usés 'inline' significa que el compilador va a aceptar esa directiva, incluso se puede hacer que el compilador trate de aceptar forzadamente que una función sea 'inline' con '__forceinline', pero es cuestión de que el compilador lo acepte de todas formas.

se usa para funciones muy redundates (y pequeñas en general), no tiene sentido en otro tipo de funciones.

El efecto que se genera al usar 'inline' en funciones que se llaman en diferentes lugares y repetidas veces, es un ejecutable de mayor tamaño, que como te dije antes, no se genera un CALL a la función sino que se genera todo el código de la función para cada llamada a ella.

Aquí alguien preguntó lo mismo , podés fijarte
http://www.cplusplus.com/forum/beginner/9209/

En este topic se muestra como se usa 'inline' en 2 funciones, fijate que sólo se permiten usar dentro de la misma unidad de compilación en la que se definen.
http://foro.elhacker.net/programacion_cc/clases_de_almacenamiento-t386497.0.html




« Última modificación: 28 Marzo 2013, 15:10 pm por 85 » En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Duda sobre funciones inline.
« Respuesta #2 en: 28 Marzo 2013, 15:46 pm »

Me ha servido de mucho tu respuesta, de todas formas aun me quedo con la duda de cuando usar inline en casos prácticos. Es decir, cuándo sé que me compensa usar inline (cuando las funciones duren 3 lineas 4, 5...) Y cuándo es mejor hacer llamadas en vez de usar inline.
En línea

I like to test things.
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Duda sobre funciones inline.
« Respuesta #3 en: 28 Marzo 2013, 15:50 pm »

http://pintucoperu.wordpress.com/2007/12/12/programacion-en-c-cuando-usar-funciones-inline/

http://stackoverflow.com/questions/1932311/when-to-use-inline-function-and-when-not-to-use-it

http://msdn.microsoft.com/en-us/library/1w2887zk(v=vs.80).aspx

funciones pequeñas, y redundantes que se llaman seguido.

EDIT:

Código:
inline sumar(a, b){

 return (a+b);
}


Código:
for(int i=0; i<30; i++){

res[i] = sumar(0,i);
}

por ejemplo. No es algo tan simple como sumar pero la idea la podés captar XD.

fijate el ejemplo que muestran ak
http://en.wikipedia.org/wiki/Inline_function

lo que podés hacer es compilar un ejemplo así y fijarte en un desensamblaor como quedó el código ensamblador en el ejecutable.



« Última modificación: 28 Marzo 2013, 16:04 pm por 85 » En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Duda sobre funciones inline.
« Respuesta #4 en: 28 Marzo 2013, 16:03 pm »

Más o menos me va quedando claro, muchas gracias :)
En línea

I like to test things.
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Duda sobre funciones inline.
« Respuesta #5 en: 28 Marzo 2013, 16:07 pm »

modifiqué el post igualmente, pero fijate que dentro del FOR no se hace un CALL a la función por cada vuelta sino que se realiza una suma y una asignación.

por lo tanto fijate todo lo que te ahorrás
Citar
Function calls (including parameter passing and placing the object's address on the stack)
Preservation of caller's stack frame
New stack-frame setup
Return-value communication
Old stack-frame restore
Return
En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
Wofo

Desconectado Desconectado

Mensajes: 168


Ver Perfil
Re: Duda sobre funciones inline.
« Respuesta #6 en: 28 Marzo 2013, 16:33 pm »

Un ejemplo práctico lo puedes ver en una clase:

Código
  1. class Ejemplo {
  2. private:
  3. int atributo_x;
  4.  
  5. public:
  6. inline int get_atributo_x() { return atributo_x; }
  7. };
  8.  

Lógicamente puedes encontrar muchos más ejemplos, pero el uso más típico que yo le doy es en este tipo de funciones, especialmente por su corta longitud.
« Última modificación: 28 Marzo 2013, 16:36 pm por Wofo » En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Duda sobre funciones inline.
« Respuesta #7 en: 28 Marzo 2013, 17:04 pm »

Vale vale jejeje, me quedó claro.
En línea

I like to test things.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Duda Python+TK] Sobre variables y funciones
Scripting
xassiz_ 3 4,139 Último mensaje 4 Marzo 2010, 21:21 pm
por xassiz_
duda sobre estructuras y funciones
Programación C/C++
asdavid 3 2,809 Último mensaje 29 Noviembre 2012, 00:01 am
por durasno
Duda sobre ficheros en funciones
Programación C/C++
muymuyperdido 4 2,926 Último mensaje 23 Diciembre 2012, 15:43 pm
por muymuyperdido
Duda sobre funciones que devuelven punteros
Programación C/C++
NathanD 4 6,378 Último mensaje 2 Marzo 2013, 10:21 am
por 85
¿Son las funciones inline, inline todo el tiempo?
Programación General
Usuario887 2 3,073 Último mensaje 1 Noviembre 2021, 17:46 pm
por Usuario887
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines