Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda declaracion de funciones

Estas en el tema de Duda declaracion de funciones en el foro de C/C++ en Foros del Web. Buenas, mi duda es porque, he visto algunos src y algo me pico la mosca. Las declaraciones de funciones staticas, es algo que no logro ...
  #1 (permalink)  
Antiguo 30/07/2008, 10:15
 
Fecha de Ingreso: marzo-2008
Mensajes: 37
Antigüedad: 16 años, 8 meses
Puntos: 0
Duda declaracion de funciones

Buenas, mi duda es porque, he visto algunos src y algo me pico la mosca. Las declaraciones de funciones staticas, es algo que no logro comprender.

Se por uso que las variables automaticas son las que se crean al hacer la llamada a la funcion y se destruyen al retornar dicha funcion, y que las staticas mantienen el valor durante llamadas. Lo que ocurre esque nunca entendia el porque de esto(ejemplo):

Código:
static void prueba()
{
//...
}
Y pense en que esque todas las variables que se creaban con una funcion con declaracion "static" eran definidas como staticas, pero no es asi, y lo cierto esque sigo sin entender el porque de su declaracion, cual es su funcion.

A ver si alguien puede echarme un cable, muchas gracias de antemano.

Saludos
  #2 (permalink)  
Antiguo 30/07/2008, 10:58
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: Duda declaracion de funciones

Cuando tienes un proyecto con muchos programas en C, cada uno lo compilas por separado y luego los unes en el proceso de linkeo. Si usas un ambiente integrado, tal vez esto ocurra sin que lo sepas.

La cosa es que cada uno de los programas que participan del proyecto pueden hacer uso de funciones que estan definidas en otros programas escritos en C. Es el link el que finalmente resuelve si la funcion que invocaste, esta definida en otro lugar.

Para evitar que una cierta funcion sea visible desde otro modulo, pones static al principio y esa funcion solo sera visible desde el mismo modulo, pero no de otros. Osea, los genios que inventaron el lenguaje C usaron la misma palabra para 2 usos completamente distintos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:48.