otra de prog en c en linux

soy un pesao, pero me asaltan dudas muy raras que no se siquiera como se buscan en google o en otros sitios.

me explico, tengo dos funciones que se llaman una a la otra, ambas estan prototipadas al principio del programa, sin embargo como es logico una esta definida antes que la otra y entonces gcc me dice que al llamar la que esta encima a la que esta definida despues no puede acceder a esa funcion porque esta...

In function `juegarojo.0':
: undefined reference to `juegaamarillo'
collect2: ld returned 1 exit status

PD: creo que la solucion es muy facil o muy tonta pero es que no se me ocurre nada a estas horas.
Yo en programación soy un cateto pero..... XD XD

No se pueden declarar las funciones antes de usarlas??? ein?

A mi me suena que sí....

[bye] [bye]
Hola,

Dices que tienes dos funciones y que una llama a la otra... Has declarado las funciones a principio, antes del main.

Intenta declararlas depués del main y en lugar de ello pon las cabeceras.

Ahora, no se me ocurre nada más... sin ver código, bueno... mejor dicho, detras de la telilla de legañas... buenos dias...
bien he probado lo de rurouni y no ha funcionado.

me explico mejor como estan situadas. tengo una gran funcion que hace de servidor y dentro de el estan definidas estas subfunciones que se llaman una a la otra y que usan muchas variables de servidor. si las extraigo de la funcion grande pues me quedo sin poder usar las variables estas. y definirlas antes o prototiparlas como querais llamarlo no da ningun resultado supongo que por estar dentro de servidor y prototipar servidor y echarlo debajo del main tampoco.

toy hecho un lio :(
marcgenou escribió:me explico mejor como estan situadas. tengo una gran funcion que hace de servidor y dentro de el estan definidas estas subfunciones que se llaman una a la otra y que usan muchas variables de servidor. si las extraigo de la funcion grande pues me quedo sin poder usar las variables estas. y definirlas antes o prototiparlas como querais llamarlo no da ningun resultado supongo que por estar dentro de servidor y prototipar servidor y echarlo debajo del main tampoco.


Buenas, espero haber entendido tus dudillas [tomaaa] [tomaaa] ,sino mejor que pongas el código y ya se corrige más fácilmente. [oki]

Lo primero, para compartir variables entre funciones existen varios métodos,a saber:

1ºSi los datos son pequeños en tamaño y en número lo suyo es pasarlos como argumentos en las llamadas a las funciones por valor ( que son como lo estarás haciendo:valordevuelto:funcion(parametros)
2ºSi los datos son grandes o la funcion a la que vas a llamar tiene que modificar datos de la funcion llamante, se debe usar punteros a los datos (o lo que en palabras normales son las direcciones de los datos,este es el tema más peliagudo del C,hasta que se entiende bien [fies] )
3ºOtra manera de compartir los datos entre funciones sería declararlas globales, es decir que pertenezcan a todas las funciones, se hacen declarandolas fuera de una funcion (y si tienes varios ficheros con funciones hay que volver a declararlas con la directiva extern, sino recuerdo mal...)
Este método no es nada aconsejable para la buena programación pero para ciertas situaciones biene bien.

En cuanto al tema de la declaración ,definición y llamada a las funciones debería de funcionar si está bien hecho.Sabes lo que significa cada una y su uso? Son conceptos clave para la programación estructurada en C y la verdad es que googleando un poco encontrarás tutoriales para aprenderlo, aunque si no te aclaras en algo, pregunta.

Por cierto, para las preguntas de programación yo pienso que es mejor ir con el código por delante, qué opinais vosotros?

Salu2
weno, os aviso que lo he resuelto ya, he usado como apoyo las funciones de unso threads que tenia mas abajo y de ahi no ha habido problema en llamar a las otras y ahora va todo como la seda hasta que casque en un proximo episodioXD.

tengo claro (todo lo claro que puede tener un pollo universitario) lo de llamadas declaracion y todo eso, lo que no puedo hacer mas que nada por increible es postear un codigo de 650 lienas de sockets y threads y todo eso porque me pierdo yo que lo he hecho asi que por eso os lo resumia explicandome lo mejor posible. XD

a todos muchas gracias por intentar ayudarme con este suplicio que me esta costando horrores y gracias por aguantar mis continuas preguntas sobre prog en linux.
5 respuestas