C/Visual C - Que significa extern?

 
Vista:

Que significa extern?

Publicado por Makz (2 intervenciones) el 30/04/2002 02:02:55
En muchos programitas en C que he visto, hay cosas como extern int,
extern funcion(), etc. y ese ultimo es lo que mas me confunde porque nada mas llama a la funcion funcion(), pero funcion() no esta definida en ninguna parte del codigo, ni en los .h ni nada, ¿me pueden explicar por favor?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Que significa extern?

Publicado por chuidiang (677 intervenciones) el 30/04/2002 07:06:20
extern quiere decir que la variable que va detrás está definida en otro fichero al que no incluyes. Por ejemplo, si en un fichero "uno.c" declaras una variable global
int a;

para "verla" desde un segundo fichero "dos.c", necesitas volver a declararla, pero indicando que ya está definida en otro fichero
extern int a;

Luego, al compilar/enlazar tu programa, necesitas ambos ficheros o te dara un error de que no encuentra la variable a.

A veces la variable global va definida en una libreria ya compilada (un fichero .dll o similar, no el fichero .h correspondiente). Necesitas poner el extern, pero en ningún sitio la encontraras declarada (está dentro de la .dll, en un código ya compilado). En la ayuda/manual de cómo usar dicha librería, debería decirte que variables extern deberías declarar.

Por ejemplo, si no recuerdo mal, hay una variable global llamada errno (puede que sea de C para linux) que te da un entero con el último error que haya ocurrido. Dicha variable está definida en una librería y no en un .h. Si en mi codigo pongo
extern int errno;
luego puedo poner cosas como
printf ("Ha ocurrido un error %d\n", errno);

Para las funciones es lo mismo.

Se bueno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar