Autor
|
Tema: [DUDA] Adición de librerías (Leído 4,369 veces)
|
DarkItachi
Desconectado
Mensajes: 516
Itachi Uchiha
|
Hola buenas Tengo una pregunta, cuando metes una directiva de preprocesador como #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
Mensajes: 823
|
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
Mensajes: 2.714
Nie Dam Sie
|
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
Mensajes: 516
Itachi Uchiha
|
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
Mensajes: 181
|
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 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
|
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 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
Mensajes: 516
Itachi Uchiha
|
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 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
Mensajes: 2.714
Nie Dam Sie
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Instalar librerias Dev C++ [ Duda ]
Programación C/C++
|
pandulce
|
8
|
24,332
|
2 Febrero 2012, 20:56 pm
por eleon
|
|
|
Duda con las librerías en java
Java
|
Senior++
|
8
|
4,225
|
31 Julio 2012, 20:45 pm
por reylagarto19
|
|
|
[Duda]Librerías Qt o wxwidgets
Programación C/C++
|
EMascheG
|
6
|
3,899
|
12 Agosto 2012, 21:42 pm
por EMascheG
|
|
|
duda con librerias de apache
« 1 2 »
PHP
|
Drewermerc
|
12
|
4,672
|
26 Julio 2014, 01:08 am
por Drewermerc
|
|
|
Duda para la instalación de librerias
Programación C/C++
|
Ditarex
|
1
|
1,804
|
16 Noviembre 2014, 21:47 pm
por NOIS
|
|