[Tutorial C] III.2 - Funciones externas

Ver el tema anterior Ver el tema siguiente Ir abajo

[Tutorial C] III.2 - Funciones externas

Mensaje  HarZe el Lun Dic 07, 2009 11:29 pm

Mas que otro tipo de funciones, es otra forma de acceder a ellas. En este caso, repetiré el código de la lección anterior, pero de forma separada, usando tres archivos:
Código:
main.h
main.c
media.c
El funcionamiento sería el mismo que el anterior, ¿entonces de qué sirve esto? Cuando tengas 25 funciones para un mismo programa en mismo archivo y no sepas ni donde está cada función, agradecerás haber leido este post. Vamos al grano, funcionando igual que antes, estos son los tres archivos:

Código:
// main.h

#include <stdio.h>

int n1,n2,n3,n4,n5;
float M;
float media(int a, int b, int c, int d, int e);
**Este tipo de archivo de extension: h, significa header, o sea cabecera, que es un archivo para ayudar a compilar mejor, ya que se usa para declarar, tanto las librerias a usar en el programa, como las funciones que haya distintos archivos, de una sola vez y antes de nada; para que no haya conflictos de recursividad**
Código:
// main.c

#include "main.h"

int main()
{
    printf("Introduce 5 numeros para hacer su media\n");
    scanf("%i",&n1);
    printf("\n");
    scanf("%i",&n2);
    printf("\n");
    scanf("%i",&n3);
    printf("\n");
    scanf("%i",&n4);
    printf("\n");
    scanf("%i",&n5);
    M = media(n1,n2,n3,n4,n5);
    printf("\n La media es %.2f\n",M);
    system("PAUSE");
    return 0;
}

Código:
// media.c

#include "main.h"

float media (int a, int b, int c, int d, int e)
{
    float m = (float) (a+b+c+d+e)/5;
    return m;
}
Si lo compilas, el resultado es el mismo, y para comprobarlo, compilalo. Hasta ahora no he enseñado a compilar usando varios archivos asi que doy una alternativa por cada SO.

Para Windows (Dev C++):
Nuevo -> Proyecto -> Basic -> Console Application
Al nuevo proyecto le añadimos los archivos con el click derecho sobre el proyecto y dando a Añadir código fuente. Una vez todo copiado, Compilar y ejecutar, todo debería ir como la seda, pero como siempre, unas capturas aclaratorias no vienen mal:


Para Linux (Ubuntu):

Creo que hay poco que decir al respecto, la línea que nos interesa es:
Código:
gcc main.c main.h media.c -o main
El orden es:
Código:
gcc [objetos] [modo] [resultado] [liberias]

Puedes poner tantas funciones como quieras en archivos externos, pero siempre deben estar declaradas en una cabecera (main.h) que debe ser leida previamente a main.c, ya que para usar una función hay que declararla previamente. En los archivos separados, definimos las funciones, y lo que se suele hacer es una cabecera como la nuestra donde se declaren antes de empezar todas las funciones externas, para evitar conflictos.

Esta lección es más bien sobre cómo usar mejor C, no trae nada nuevo.

HarZe
WebMaster & Desarrollador

Cantidad de envíos : 58
Fecha de inscripción : 21/06/2009
Edad : 24

Ver perfil de usuario http://opengl-esp.superforo.net

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.