[ Foro de C ]

Función

16-Nov-2014 07:18
Invitado (Revival)
1 Respuestas

¿Cómo puedo compilar este código?


# include <stdio.h>
# include <stdlib.h>
# define Z 4

int main (){

int votro=1,silo=0,contador=0,maiz=12,soja=6,cebada=11,opc=0,trigo=10;
int cant01[4]={0};
int acu1[4]={0};

void kg1 (int *cant1, int *acu);

    while(votro!=0)
    {
        printf("1. Ingreso de datos");
        printf("\n2. Mostrar Resultados");
        printf("\n3. Finalizar Programa");
        printf("\nOpcion: ");scanf("%d",&opc);
        switch(opc){
		case 1:
				
			 
			    for (silo=0;silo<Z;silo++)
                             {
				      kg1(cant01,acu1);
				}
			break;

		case 2:
		printf ("luego continuo\n");
			break;

		case 3: return 0; break;
}
}


void kg1 (int *cant1, int *acu){
int i;
for (i=0;i<Z;i++){
acu[i]=acu[i]+cant1[i];
printf ("/n");
}}}



//
Me aparece el siguiente error:


tp3.1.c: In function ?main?:
tp3.1.c:51:6: error: static declaration of ?kg1? follows non-static declaration
void kg1 (int *cant1, int *acu){
     ^
tp3.1.c:14:6: note: previous declaration of ?kg1? was here
void kg1 (int *cant1, int *acu);
//


16-Nov-2014 11:33
Nacho Cabanes (+83)

Cuando llamas a la función dentro de "main", no deberías usar "void". Eso se usa sólo cuando la defines, y lo mismo ocurre con el tipo de los parámetros. Por tanto, la línea


void kg1 (int *cant1, int *acu); 


debería ser


kg1 (cant1, acu); 


como sí haces más adelante, en el "for".

¿No puede ser que sobre toda esa línea? Como el programa no está comentado, está mal tabulado y usa nombres de variables muy cortos, no entiendo la lógica, así que no puedo decirte más...

Eso sí,por las 3 llaves que siguen a la función "kg1" parece que sea parte de "main", y debería estar fuera. Revisa eso también.







(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)