2010-12-08 11 views
9

Estoy seguro de que esto se ha preguntado antes, pero no pude encontrar nada que me ayudaría. Tengo un programa de funciones en C que tiene este aspecto¿Cómo ordenar funciones en C? "declaración implícita anterior de una función fue aquí" error

function2(){ 
    function1() 
} 
function1(){ 
    function2() 
} 

main() { 
function1() 
} 

Es más complicado que eso, pero estoy usando recursión. Y no puedo organizar la función en el archivo para que cada función solo llame a las funciones que se especifican arriba. Sigo recibiendo un error

main.c:193: error: conflicting types for 'function2' 
main.c:127: error: previous implicit declaration of 'function2' was here 

¿Cómo puedo evitar esto? Gracias de antemano por sus sugerencias y respuestas.

Respuesta

16

tiene que declarar (no definir) al menos una función antes de usarlo.

function2();     /* declaration */ 
function1() { function2(); } /* definition */ 
function2() { function1(); } /* definition */ 

int main(void) { function1(); return 0; } 
+0

La definición de 'function1()' también sirve como una declaración. – pmg

5

Probar:

function1(); 
function2(); 

function2(){ 
    function1() 
} 
function1(){ 
    function2() 
} 

main() { 
function1() 
} 
+1

¿Pero por qué es esto necesario? – abc

7

Foward declarar sus funciones ...

function1(); 
function2(); 

function2(){ 
    function1() 
} 
function1(){ 
    function2() 
} 

main() { 
function1() 
} 
+0

¿Pero por qué es esto necesario? – abc

+0

@abc la pregunta era "cómo" no "por qué". Para "por qué" sugiero leer sobre la especificación de lenguaje C en general. –

0

declaran adelante sus funciones, pero mediante el uso de prototipos . Si tienes muchos de ellos que no puedes manejar, este es el momento de pensar en tu diseño y crear un archivo .h con todos tus prototipos. Utilice

int function1(void); 
int function2(void); 

si eso era lo que quería decir. int function1() ya es diferente de la de C. Ayude al compilador para que pueda ayudarlo.

0

Así es como funciona C. Necesitamos declarar la función antes del uso. como cuando usas cualquier variable, debes declarar primero y luego la usarías.

Declaración: - function1(); function2(); y luego ponga su propio código.

Cuestiones relacionadas