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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [DUDA] Adición de librerías
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [DUDA] Adición de librerías  (Leído 3,914 veces)
DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
[DUDA] Adición de librerías
« en: 28 Abril 2010, 06:53 am »

Hola buenas :) Tengo una pregunta, cuando metes una directiva de preprocesador como
Código
  1. #include <string>
el compilador incluye las funciones que usas o todas? Es decir, si vas a usar dos funciones chorra como strlen o strlwr es mejor incluir la librería string o creártelas por tu mismo en el programa? Qué ventajas tiene? Y que desventajas?

Salu2


En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: [DUDA] Adición de librerías
« Respuesta #1 en: 28 Abril 2010, 08:15 am »

Las incluye todas. A menos que tuvieses límites de meoria y/o espacio, la inclusión de toda la libreria en vez de únicamente las x funciones que tu uses, no debería ser un problema.


En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: [DUDA] Adición de librerías
« Respuesta #2 en: 28 Abril 2010, 08:37 am »

Citar
Que desventajas?

Depende la función, pero si hablamos de funciones estándar no seria lo mas adecuado reemplazarla al menos que estemos hablando de algo estrictamente necesario.

Por ejemplo, es muy sencillo hacer una función que cuente los caracteres de un arreglo, pero funcionara igual que la estándar? sera igual de rápida? sera portable? sera igual de segura?.
Ten en cuenta que con ese criterio tendrías que codificar por tu cuenta mas de una función y eso no solo ampliara el tiempo de desarrollo, ademas, hará que el programa final sea mas susceptible a errores (Como se suele decir, prone to error)

Seguramente muchas funciones se podrían hacer en menos lineas, pero menos lineas no siempre significa mejor.

Mi opinión por lo menos es que no existen ventajas de la forma que lo estas planteando.

Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
Re: [DUDA] Adición de librerías
« Respuesta #3 en: 28 Abril 2010, 14:03 pm »

Citar
Que desventajas?

Depende la función, pero si hablamos de funciones estándar no seria lo mas adecuado reemplazarla al menos que estemos hablando de algo estrictamente necesario.

Por ejemplo, es muy sencillo hacer una función que cuente los caracteres de un arreglo, pero funcionara igual que la estándar? sera igual de rápida? sera portable? sera igual de segura?.
Ten en cuenta que con ese criterio tendrías que codificar por tu cuenta mas de una función y eso no solo ampliara el tiempo de desarrollo, ademas, hará que el programa final sea mas susceptible a errores (Como se suele decir, prone to error)

Seguramente muchas funciones se podrían hacer en menos lineas, pero menos lineas no siempre significa mejor.

Mi opinión por lo menos es que no existen ventajas de la forma que lo estas planteando.

Saludos

Osea, que es mejor usar librerías aunque vayas a usar solo una función. Pero si incluyes más librerías influye en el tamaño del ejecutable :?

Gracias.
En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
biribau

Desconectado Desconectado

Mensajes: 181


Ver Perfil
Re: [DUDA] Adición de librerías
« Respuesta #4 en: 28 Abril 2010, 16:31 pm »

Por norma general NO incluye todas las librerías, de una librería sacas libros independientes, o sea funciones. Incluye TODAS las funciones en compilación(declaraciones), pero en linkado(ejecutable final) solo mete las que uses(y dependientes), por eso las librerías son objetos especiales, no simples .obj, sino que son colecciones de simbolos indexados o algo así.

@Littlehorse: es error-prone :P

Por otra parte puedes implementarlas, a veces es util y otras necesario, a veces se necesitan implementaciones ligeras(uClib) otras reimplementaciones (cualquier nuevo sistema operativo necesitará cambios en las llamadas al sistema), mas eficientes(hay multitud de librerias para gestion de heap(malloc/free), smartpointers). Yo hice una vez mi propio new delete, para debuguear memory leaks. Y también es sabido que una de los mayores cuellos de botella fácilmente optimizables son precisamente en la gestión de memoria dinámica(sólo daros cuenta que la implementación que te dan es genérica y debe servir para todos más o menos, pero tú en tu programa tienes más información de como se usa la memoria pues puedes adaptarlo, especializarlo a tí haciendolo más rápido, evitando congelamientos a veces para no desmejorar la inmediatez de la respuesta(que raro suena esto, no recuerdo como era en inglés xD))
En línea

Lambda


Desconectado Desconectado

Mensajes: 371



Ver Perfil WWW
Re: [DUDA] Adición de librerías
« Respuesta #5 en: 28 Abril 2010, 16:43 pm »

Por norma general NO incluye todas las librerías, de una librería sacas libros independientes, o sea funciones. Incluye TODAS las funciones en compilación(declaraciones), pero en linkado(ejecutable final) solo mete las que uses(y dependientes), por eso las librerías son objetos especiales, no simples .obj, sino que son colecciones de simbolos indexados o algo así.

@Littlehorse: es error-prone :P

Por otra parte puedes implementarlas, a veces es util y otras necesario, a veces se necesitan implementaciones ligeras(uClib) otras reimplementaciones (cualquier nuevo sistema operativo necesitará cambios en las llamadas al sistema), mas eficientes(hay multitud de librerias para gestion de heap(malloc/free), smartpointers). Yo hice una vez mi propio new delete, para debuguear memory leaks. Y también es sabido que una de los mayores cuellos de botella fácilmente optimizables son precisamente en la gestión de memoria dinámica(sólo daros cuenta que la implementación que te dan es genérica y debe servir para todos más o menos, pero tú en tu programa tienes más información de como se usa la memoria pues puedes adaptarlo, especializarlo a tí haciendolo más rápido, evitando congelamientos a veces para no desmejorar la inmediatez de la respuesta(que raro suena esto, no recuerdo como era en inglés xD))

Las .lib (y creo que las .a tambien) son simples colecciones de .objs, de hecho puedes extraerlos xD

Sobre el tema, cuando incluyes el <string> lo que hace el preprocesador es reemplazar esa linea por todo el contenido del header pero luego a la hora de linkear el linker solo metera las funciones que utilizas.
En línea

DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
Re: [DUDA] Adición de librerías
« Respuesta #6 en: 28 Abril 2010, 17:16 pm »

Por norma general NO incluye todas las librerías, de una librería sacas libros independientes, o sea funciones. Incluye TODAS las funciones en compilación(declaraciones), pero en linkado(ejecutable final) solo mete las que uses(y dependientes), por eso las librerías son objetos especiales, no simples .obj, sino que son colecciones de simbolos indexados o algo así.

@Littlehorse: es error-prone :P

Por otra parte puedes implementarlas, a veces es util y otras necesario, a veces se necesitan implementaciones ligeras(uClib) otras reimplementaciones (cualquier nuevo sistema operativo necesitará cambios en las llamadas al sistema), mas eficientes(hay multitud de librerias para gestion de heap(malloc/free), smartpointers). Yo hice una vez mi propio new delete, para debuguear memory leaks. Y también es sabido que una de los mayores cuellos de botella fácilmente optimizables son precisamente en la gestión de memoria dinámica(sólo daros cuenta que la implementación que te dan es genérica y debe servir para todos más o menos, pero tú en tu programa tienes más información de como se usa la memoria pues puedes adaptarlo, especializarlo a tí haciendolo más rápido, evitando congelamientos a veces para no desmejorar la inmediatez de la respuesta(que raro suena esto, no recuerdo como era en inglés xD))

Las .lib (y creo que las .a tambien) son simples colecciones de .objs, de hecho puedes extraerlos xD

Sobre el tema, cuando incluyes el <string> lo que hace el preprocesador es reemplazar esa linea por todo el contenido del header pero luego a la hora de linkear el linker solo metera las funciones que utilizas.

Entonces, no importa si metes muchas librerias?

Salu2
En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: [DUDA] Adición de librerías
« Respuesta #7 en: 28 Abril 2010, 19:12 pm »

No, no importa.

@biribau: Es exactamente lo mismo.

Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Instalar librerias Dev C++ [ Duda ]
Programación C/C++
pandulce 8 23,651 Último mensaje 2 Febrero 2012, 20:56 pm
por eleon
Duda con las librerías en java
Java
Senior++ 8 3,890 Último mensaje 31 Julio 2012, 20:45 pm
por reylagarto19
[Duda]Librerías Qt o wxwidgets
Programación C/C++
EMascheG 6 3,471 Último mensaje 12 Agosto 2012, 21:42 pm
por EMascheG
duda con librerias de apache « 1 2 »
PHP
Drewermerc 12 4,284 Último mensaje 26 Julio 2014, 01:08 am
por Drewermerc
Duda para la instalación de librerias
Programación C/C++
Ditarex 1 1,580 Último mensaje 16 Noviembre 2014, 21:47 pm
por NOIS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines