La Web del Programador: Comunidad de Programadores
 
    Pregunta:  65390 - ESTRUCTURAS COMO PARAMETROS
Autor:  Juan Ortiz
Hola, mi problema es el siguiente, tengo creado una estructura, despues creo un vector que el tipo es la estructura, y cuando lo quiero pasar como parametro me da errores por todos lados, como seria el prototipo? lo que tengo es lo siguiente:

#include<stdio.h>
#include<conio.h>
#include<string.h>
void carga (libros []);

main ()
{
typedef struct {
int cod, cant;
char autor[20], tit[20];} libros;
libros exis [10];
int opc;
carga (exis);
do {
printf ("1-PRESTAMO DE LIBROS 2-DEVOLUCION DE LIBROS 3-FIN");
do {
scanf (" %d", &opc);
} while ((opc<1) && (opc>3));
switch (opc)
{
case 1: presupuesto (); break;
case 2: devolucion (); break;
};while ( opc != 3);
getch ();
return 0;
}

Obvio falta declarar la funcion esa y las otras, y un monton de cosas. Espero que me puedan ayudar. Gracias :)

  Respuesta:  Capitan Kirk
El problema es que has definido el prototipo de la función carga ANTES de definir la estructura libros, por lo que, para empezar, ya te dará un error en la definición de ese prototipo (no te reconoce el tipo del parámetro). Debes sacar la definición de la estructura fuera de la función main (no puede ir ahí si la defines con typedef) y ponerla antes de la definición del prototipo de función. Como sugerencia, estructura tus programas de este modo:

- #include (archivo(s) de cabecera a incluir)
- #define (definición de macros, si los usas)
- typedef struct (definiciones de estructuras de datos)
- Prototipos de funciones
- Variables globales, si las usas
- Función main()
- Resto de funciones (las declaradas en los prototipos)

De este modo, te aseguras de que todo lo que utilices ha sido declarado previamente.

Saludos,