Ámbito de funciones en C (scope)
En otro artículo similar hemos visto el ámbito de las funciones en C. Como complemento, también existe un ámbito para las funciones en C. En este artículo abordaremos todo acerca de este aspecto tan interesante en C.
En C podemos clasificar las funciones como externas y estáticas. Las funciones externas son por naturaliza exportables, es decir, se puede usar en otros archivos. Las funciones estáticas solo se pueden usar en el archivo en el cual fueron declaradas.
Todas las funciones son de carácter global; esto es, una función no puede definirse dentro de un bloque.
Funciones externas (por defecto)
En C las funciones por defecto son globales y externas. Esto quiere decir que podemos utilizar funciones de otros archivos impotándolas a nuestro archivo principal. El modificar por defecto es extern
.
main.c
#include <stdio.h>
void say_hello();
int main()
{
say_hello();
return 0;
}
funciones.c
#include <stdio.h>
extern void say_hello()
{
printf("Hello!\n");
}
Al compilar este programa no se obtiene warnings ni errores.
gcc main.c funciones.c
Funciones estáticas
Al agregar el modificar static
a una función esta será visible solamente en su propio archivo fuente. Si tomas el ejemplo anterior y cambias extern
por static
verás un error del compilador.
Por otro lado puedes sobreescribir una función externa en un archivo agregando el modificador static
.
main.c
#include <stdio.h>
static void say_hello()
{
printf("Hello local!\n");
}
int main()
{
say_hello();
return 0;
}
funciones.c
#include <stdio.h>
extern void say_hello()
{
printf("Hello!\n");
}