先决条件:C语言中的静态变量
在C语言中,默认情况下函数是全局的。函数名称前的“ static ”关键字使其变为静态。例如,下面的fun()函数是静态的。
static int fun(void)
{
printf("I am a static function ");
}
与C中的全局函数不同,对静态函数的访问仅限于声明它们的文件。因此,当我们想限制对函数的访问时,我们将它们设为静态。使函数成为静态的另一个原因可能是在其他文件中重用了相同的函数名。
例如,如果我们将以下程序存储在一个文件file1.c中
/* Inside file1.c */
static void fun1(void)
{
puts("fun1 called");
}
并将以下程序存储在另一个文件file2.c中
/* Inside file2.c */
int main(void)
{
fun1();
getchar();
return 0;
}
现在,如果使用命令“ gcc file2.c file1.c ”编译以上代码,则会出现错误“未定义引用’fun1’” 。这是因为fun1()在file1.c中被声明为静态的,而不能在file2.c中使用。
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。