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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (duda) Crear un archivo con funciones para poder usarlas.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (duda) Crear un archivo con funciones para poder usarlas.  (Leído 1,803 veces)
frostshadow6

Desconectado Desconectado

Mensajes: 1


Ver Perfil
(duda) Crear un archivo con funciones para poder usarlas.
« en: 19 Mayo 2017, 11:08 am »

Buenas!

Estoy en primer año de ingenieria informática (programando en c++) y hemos empezado a trabajar con clases.

Mi pregunta es, seria posible hacer un fichero donde se puedan implementar funciones, sin la necesidad de crear una clase en si, solo implementar funciones para que luego solo con hacer include de ese fichero pueda usar las funciones.

Es decir, si yo quiero hacer un fichero donde guardar una funcion donde le pase 3 numeros y me devuelva la suma de los 3 (super simple) para despues en cualquier programa principal solo con hacer include de ese fichero, ya pueda utilizar esa función, y todas las que estén implementadas en él. 

Seria eso posible? Si es así, como se haria?

Gracias de antemano =)


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: (duda) Crear un archivo con funciones para poder usarlas.
« Respuesta #1 en: 19 Mayo 2017, 14:09 pm »

Sí, de hecho esto es la base de la programación modular. Es lo mismo que te han enseñado para las clases pero sin encerrar las funciones dentro de una clase.
Por una parte creas el archivo de cabecera con las declaraciones de las funciones y por otra un archivo de implementación que llevará las definiciones. En éste último harás include del primero.
Compilas el archivo para crear un archivo objeto, librería estática o librería dinámica.
En el programa cliente incluyes la cabecera y a la hora de enlazar para generar el ejecutable o librería debes indicar al enlazador que debe usar el archivo objeto, librería estática o librería dinámica que has compilado con anterioridad.

Ejemplo:
Cabecera: suma.h
Código
  1. #ifndef SUMA_H
  2. #define SUMA_H
  3.  
  4. int suma(int a, int b, int c);
  5.  
  6. #endif

Implementación: suma.c
Código
  1. #include "suma.h"
  2.  
  3. int suma(int a, int b, int c) {
  4.    return a + b + c;
  5. }

Ahora en gcc se genera el archivo objeto suma.o:
Código
  1. gcc -c suma.c

Programa cliente: programa.c
Código
  1. #include <stdio.h>
  2. #include "suma.h"
  3.  
  4. int main() {
  5.    printf("%d\n", suma(1, 2, 3));
  6. }

Ahora en gcc se compila el programa entero.
Código
  1. gcc programa.c suma.o -o programa

En el archivo de cabecera se pueden ver las guardas con hechas con directivas de preprocesador. Esto es para que no se incluya más de una vez la misma cabecera, cosa que crearía conflictos.


« Última modificación: 19 Mayo 2017, 14:49 pm por MAFUS » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines