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


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 566 veces)
OmarHack


Desconectado Desconectado

Mensajes: 1.075


El más grande.


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

¿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

Tengo más aspiraciones que un ataque asmático.
Lo mejor es lo que queda por venir. ¿Quienes de los que estáis hoy aquí se va a rendir?
85

Desconectado Desconectado

Mensajes: 205



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

'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 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.075


El más grande.


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

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

Tengo más aspiraciones que un ataque asmático.
Lo mejor es lo que queda por venir. ¿Quienes de los que estáis hoy aquí se va a rendir?
85

Desconectado Desconectado

Mensajes: 205



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

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 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.075


El más grande.


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

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

Tengo más aspiraciones que un ataque asmático.
Lo mejor es lo que queda por venir. ¿Quienes de los que estáis hoy aquí se va a rendir?
85

Desconectado Desconectado

Mensajes: 205



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

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 »

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 por Wofo » En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.075


El más grande.


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

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

Tengo más aspiraciones que un ataque asmático.
Lo mejor es lo que queda por venir. ¿Quienes de los que estáis hoy aquí se va a rendir?
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda sobre dos funciones
Programación C/C++
maryrisas 2 502 Último mensaje 10 Mayo 2006, 14:54
por maryrisas
Duda Sobre sockets en C. Funciones: htons y htonl
Programación C/C++
El_Marine 9 3,220 Último mensaje 22 Mayo 2007, 13:00
por kamsky
[?] funciones inline y returns
Programación C/C++
oxydec 1 1,655 Último mensaje 8 Abril 2011, 08:45
por Akai
duda sobre estructuras y funciones
Programación C/C++
asdavid 3 369 Último mensaje 29 Noviembre 2012, 00:01
por durasno
Duda sobre ficheros en funciones
Programación C/C++
muymuyperdido 4 514 Último mensaje 23 Diciembre 2012, 15:43
por muymuyperdido
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines