[C con Clase] persistencia
Steven Davidson
srd4121 en njit.edu
Mar Feb 24 07:00:49 CET 2009
Hola Samuel,
Samuel Porras wrote:
> Buenos días,
> escribo a la lista para resolver un par de dudas sobre la
> persistencia en lenguaje C.
>
> Estoy estudiando la persistencia automática y la persistencia
> estática, la persistencia automática tiene auto y register que se
> comportan de un modo determinado y la estatica permanece a lo largo
> de todo el programa, tanto en una como en otra, dicen
> identificadores, en las de persistencia automática dicen que solo se
> puede usar con variables automáticas y en la persistencia estática en
> la declaración de variables y de funciones.
>
> La duda es:
> - static y extern se puede utilizar en funciones y variables, auto y
> register solo en variables, no? o en las dos solo se utiliza en
> variables, y de ser así
La primera parte de tu afirmación es correcta:
- Las variables pueden tener: auto, register, extern, o static.
- Las funciones pueden tener: extern, o static.
> ¿Qué utilidad tendría declarar static y extern una función?
>
Indicar que una función es estática significa que su existencia o "vida"
sólo pertenece al código fuente que la definió. Es decir, tal función
tiene un ámbito de fichero. Por ejemplo,
// fuente1.c
static int func( int );
...
// fuente2.c
static void func( float[], int );
...
Las dos funciones 'func()' no guardan relación alguna y existen
exclusivamente en su fichero fuente correspondiente.
Indicar 'extern' para una función no tiene mucho sentido, ya que por
defecto su enlazado es externo y por tanto visible y compartido por
otros ficheros fuentes.
En C++, existen otros usos y en el caso de variables y funciones
miembros, 'static' tiene otro uso.
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase