Analia Hojman, el 6 de abril a las 19:12 me escribiste: > Buenas..en esta ocacion se me esta presentando la siguiente duda: > > En C, por que razon hace falta poner "static" a una funcion, al querer que la > misma sea privada? > Digo, si uno no la hace static, no la incluye en el .h, y el .cpp no es > entregado, no estaria siendo privada de todas formas?¿
Eso sería seguridad por oscuridad. Sería privada en el sentido de que quien recibe el .h y el .o (o como sea que lo entregues) no sabe que existe. Pero si supiera que existe, puede declarar la función en cualquier lado y usarla. Otro problema que existe si no usás static es, por ejemplo, si tu modulo.c tiene: int min(int x, int y); No la incluís en el .h por lo tanto para vos sería "privada". Pero a la persona que usa el .h se le ocurre definir otra función, que puede tener la misma firma u otra pero el mismo nombre, por ejemplo: int min(Lista* l); Cuando el tipo linkee su código con el .o que le entregaste vos, el linker va a fallar, quejándose de múltiples definiciones de min (en C, en C++ no pasa porque el nombre de la función incluye, de una forma u otra, sus parámetros). La única forma de evitar esto es definiendo tu función static. Básicamente static hace que una función no exista para el linker. -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- EXTRAÑA RELACION ENTRE UN JUBILADO Y UN JABALI -- Crónica TV
_______________________________________________ Lista de correo Programacion. [email protected] http://listas.fi.uba.ar/mailman/listinfo/programacion
