Programación C: ¿Headers o bibliotecas? Creando nuestra propia "lib"

  Рет қаралды 4,332

JuncoTIC

JuncoTIC

Күн бұрын

Пікірлер: 23
@dagarcia154
@dagarcia154 Жыл бұрын
Muy buena explicación. Estuve buscando por mucho tiempo en internet y no llegué a encontrar una explicación tan buena de los archivos .h y los archivos .lib. Me ha resuelto todas las dudas, muchísimas gracias. Un saludo
@Juncotic
@Juncotic Жыл бұрын
Hola!! Me alegro muchísimo que el video te haya servido!! :D Saludos y gracias a vos por dejar tu comentario! Diego @d1cor
@victorm.rodriguezs.7329
@victorm.rodriguezs.7329 Жыл бұрын
¡Felicidades! Es un gran y buen ejemplo ya puesto en practica. Todo eso ya practicado y probado lo podemos guardar en un .bat y a producir nuestras librerías a granel. Buen video. Gracias.
@Juncotic
@Juncotic Жыл бұрын
Mil gracias a vos por tu comentario!! Saludos! Diego
@Carlos-kd7tu
@Carlos-kd7tu 2 жыл бұрын
muy buen video, y sobre todo el articulo, muy buena ayuda para comprender el proceso de compilacion etc en c, gracias
@Juncotic
@Juncotic 2 жыл бұрын
Mil gracias a vos por comentar! Me alegra que el contenido te haya servido!
@FranRoscelli
@FranRoscelli 6 жыл бұрын
Re bien explicado!!, y el ejemplo es muy ilustrativo. Salvaste mi parcial de mañana jaja
@Juncotic
@Juncotic 6 жыл бұрын
jaja muchas gracias!!! Espero que te haya ido bien en el parcial! :) (@d1cor)
@yosef3176
@yosef3176 4 жыл бұрын
me ayudaste mucho. Muchas GRACIAS!
@Juncotic
@Juncotic 4 жыл бұрын
Al contrario! Gracias a vos por comentar. Saludos! @d1cor
@teresaolmos9460
@teresaolmos9460 2 жыл бұрын
Hola! Todo muy bien explicado, solo una duda, al momento de ejecutar: gcc calculadora.o -L../libcalculadora/ -lcalculadora -o calculadora ¿Por qué se debe poner 'lcalculadora', si el nombre que se le había dado al archivo era libcalculadora.a? Gracias 😁
@Juncotic
@Juncotic 2 жыл бұрын
Hola Teresa! Perdón por el delay! Exacto, -lcalculadora es porque el compilador busca un archivo de librería llamado libcalculadora.a en la ruta especificada por el modificador "-L". Gracias por tu comentario! @d1cor
@teresaolmos9460
@teresaolmos9460 2 жыл бұрын
@@Juncotic Muchas gracias!!
@morenasodefuego76
@morenasodefuego76 3 жыл бұрын
Muy buena explicacion
@richardfrangie3518
@richardfrangie3518 2 жыл бұрын
Llegue aquí por la página web, me sirvio para entender un poco sobre compilación, linker, código objeto, pero me queda la duda, cual es la diferencia entre código objeto, bytecode y código maquina, gracias
@Juncotic
@Juncotic 2 жыл бұрын
Hola Richard! Me alegro que el video te haya servido! Respecto de tu duda, al hablar de bytecode estamos hablando de un lenguaje que ejecuta aplicaciones mediante una máquina virtual (o runtime) intermedio. Eso no se ve en C porque el fuente de C lo compilás y generás directamente código de máquina para tu sistema operativo y arquitectura específica. Lenguajes como Java, por ejemplo, funcionan con lo que se denomina máquina virtual, o runtime, que es un "intérprete" intermedio. Cuando compilás un programa en Java, el compilador nativo genera un "código de máquina" intermedio para esa máquina virtual, y la máquina virtual, al momento de la ejecución, interpreta ese código intermedio y genera el código de máquina que puede leer tu sistema operativo. Ese código de máquina intermedio es lo que se llama "bytecode". Eso lo hace mayormente por portabilidad, es decir, vos podés tener una máquina virtual java (runtime) instalada en Linux y otra en Windows. Te creás una aplicación, la compilás y obtenés el bytecode (código de máquina para la máquina virtual). Y ese bytecode lo podés ejecutar en el runtime de linux o en el de windows sin necesidad de modificarlo para cada arquitectura... esa modificación la hace el runtime en cada sistema operativo, y te ahorrás "recompilar" el código fuente para cada sistema. Eso lo hace más portable a tu código, pero al tener que pasar por un intérprete intermedio como el runtime, también lo suele hacer más lento y suele consumir más recursos. Espero te sirva! Me quedó larga la respuesta :P Saludos! @d1cor
@richardfrangie3518
@richardfrangie3518 2 жыл бұрын
@@Juncotic Oh amigo q bien, gracias, ahora si entendí, no sabe cuantos blog leí y nada, hasta que llegue al suyo y fue el único que medio empece a entender, y el código objeto que sería?, yo tengo la idea pero al mezclarlos me enredo, gracias por responder.
@richardfrangie3518
@richardfrangie3518 2 жыл бұрын
Ah y disculpe pero los tres son códigos binarios?
@Juncotic
@Juncotic 2 жыл бұрын
En el proceso de compilación, tomás el código fuente, lo compilás y generás código de máquina de ese fuente, y a ese código se lo llama "objeto". Ese código fuente seguramente haga uso de librerías externas, como el libc, por lo que el código objeto compilado no es ejecutable, no es funcional, porque primero tenés que enlazarlo (link) con los códigos de esas librerías externas. Al enlazarlos estás transformando tu código objeto en un código binario ejecutable. Así, el código objeto es un código binario que todavía no está enlazado con las librerías externas.
@Juncotic
@Juncotic 2 жыл бұрын
Código objeto y binario ejecutable sí, son binarios, incluyen código de máquina. El bytecode también suele ser binario, porque es código de máquina para una máquina virtual específica. El único código legible por el humano es el fuente, que es texto plano.
@diegopersello3430
@diegopersello3430 4 жыл бұрын
HOla muy buenas estimado! Una consulta....Que pasa si quito stdio.h y stdlib.h de mi archivo main.c y los coloco en mi cabecera a utilizar? Yo lo hice y mi programa funciona, pero es una bestialidad esto? Me sabrías explicar? Muchas gracias! Saludos desde Mar del Plata, Argentina!!!
@Juncotic
@Juncotic 4 жыл бұрын
Hola Diego! No, no es una bestialidad, todo depende de dónde uses tu cabecera .h. Como regla general: (1) Los headers deben incluirse sólo donde sean necesarios. Podés tener un ejemplo.h que incluya a math.h, y otros 30 archivos que incluyan a ejemplo.h, de los cuales sólo uno de ellos use math.h. (2) Los headers que crees deberían ser tolerantes a duplicados (usando #ifndef _EJEMPLO_H_ y esas cosas). (3) No debe importar el orden en el que se incluyan los headers en un archivo .c/.cpp. Así, si tenés 30 archivos .c que utilizan stdio, y a su vez todos incluyen un ejemplo.h, podría ser ordenado incluir el stdio dentro del ejemplo.h y sacar el stdio de los .c, pero sería bueno hacer eso solamente en el caso de que se justifique a nivel de mantenibilidad del código. Yo suelo definir los .c según funcionalidad (funciones relacionadas, por ejemplo) y suelo crear un .h por cada .c con sus prototipos y definiciones de datos. Los .h de lib estándar los suelo incluir en los .c luego de mis .h y sólo en aquellos .c que lo requieran. En los .h míos suelo incluir los .h de la lib estándar sólo si los necesito para alguna definición de dato. Esto es opinión personal! Una buena práctica es ir a repositorios git de proyectos open source grandes, y estudiar cómo están armados para sacar ideas, en general están hechos por programadores con mucha experiencia y horas de código. Espero te sirva! Saludos desde San Rafael, Mendoza!! @d1cor
@diegopersello3430
@diegopersello3430 4 жыл бұрын
@@Juncotic excelente! Gracias por tomarte el tiempo de responder! Quedo a la espera de más contenido! Saludos!
Extendiendo VIM: utilizando plugins!
13:44
JuncoTIC
Рет қаралды 14 М.
21. Creación de HEADERS en LENGUAJE C
16:31
Ericka Zavala
Рет қаралды 9 М.
Сестра обхитрила!
00:17
Victoria Portfolio
Рет қаралды 958 М.
Une nouvelle voiture pour Noël 🥹
00:28
Nicocapone
Рет қаралды 9 МЛН
Try this prank with your friends 😂 @karina-kola
00:18
Andrey Grechka
Рет қаралды 9 МЛН
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН
C++ : Compilar y enlazar librerías estáticas
33:40
Profesor Retroman
Рет қаралды 6 М.
Tutorial de C - 37. Bibliotecas estáticas
13:16
makigas
Рет қаралды 4,8 М.
rsync - Un vistazo a esta gran herramienta!
19:30
JuncoTIC
Рет қаралды 1,2 М.
Bloque C Medio 2.2: Crear Libreria propia
19:07
Empieza A Programar
Рет қаралды 54 М.
C++ Templates, ¡No sé cómo funcionan!
59:26
Profesor Retroman
Рет қаралды 5 М.
Сестра обхитрила!
00:17
Victoria Portfolio
Рет қаралды 958 М.