[EMAIL PROTECTED], el 14 de julio a las 11:40 me escribiste: > Buenas gente. > Como verán en el asunto, estoy tratando de entender la diferencia > entre declaración y definición para el lenguaje C (más que nada para > variables). > Estuve googleando un rato y buscando varias "opiniones" pero, al menos > por lo que ví, en muchos lugares casi que usan los dos términos como > si fueran el mismo... > Llegué a la siguiente conclusión, espero alguien más experimentado en > el tema me pueda decir si es o no la correcta: > > - La declaración implica informarle al compilador de la existencia de > una variable o función para que sepa como debe utilizarce, pero sin > reservar memoria (caso de las variables) ni conocer como ejecutarla > (caso de funciones). > - La definición implica que el compilador reserver memoria (caso de > las variables) y que se provea en forma completa el cuerpo de la > función (caso de las funciones).
Correcto. La definición implica que el compilador "reserve" memoria (en el *ejecutable*) tanto para funciones como para variables. En caso de las funciones, el espacio que reserva en el ejecutable es el assembly con el cuerpo de la función, en caso de las variables, deja un "espacio vacío" (en realidad el contenido es el valor con el que se inicializa la variable global o estática, que son las que ocupan lugar en el ejecutable). > La declaración de una variable implica su inicialización?. No, para nada. Inicialización va de la mano de definición, por lo que comentaba arriba (la "inicialización" es el valor que se guarda en el ejecutable en el espacio "reservado" para esa variable). > Que sucede si tengo algo como "extern int variable", es un > declaración? Sí. Para eso sirve la palabra reservada "extern" en caso de variables (globales, en las únicas que tiene sentido), para decirle al compilador: "voy a usar una variable que se llama 'variable' y es de tipo 'int', pero no va a estar en este código objeto, buscala en otro lado en timpo de linkeo". > , es una definición?. No. > Espero alguien pueda contestarme. Espero que quede claro. -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- Debemos creer en los sueños del niño. Cuando el niño sueña con tetas, se toca. -- Ricardo Vaporeso. Toulouse, 1915.
_______________________________________________ Lista de correo Programacion. [email protected] http://listas.fi.uba.ar/mailman/listinfo/programacion
