在C中使函数成为静态函数的意义是什么?
发布于 2011-03-16 07:51:33
C中的static
关键字用于编译后的文件(.c而不是.h),因此函数只存在于该文件中。
通常,当您创建一个函数时,编译器会生成cruft,链接器可以使用它将函数调用链接到该函数。如果使用static关键字,则同一文件中的其他函数可以调用此函数(因为无需借助链接器即可完成),而链接器没有允许其他文件访问该函数的信息。
发布于 2014-12-16 08:17:22
C程序员使用静态属性在模块中隐藏变量和函数声明,就像在Java和C++中使用公有和私有声明一样。C源文件扮演着模块的角色。使用static属性声明的任何全局变量或函数对该模块都是私有的。类似地,没有使用static属性声明的任何全局变量或函数都是公共的,并且可以由任何其他模块访问。尽可能使用static属性来保护您的变量和函数是一种很好的编程实践。
发布于 2020-06-04 19:18:57
当需要限制对某些函数的访问时,我们将在定义和声明函数时使用static关键字。
/* file ab.c */
static void function1(void)
{
puts("function1 called");
}
And store the following code in another file ab1.c
/* file ab1.c */
int main(void)
{
function1();
getchar();
return 0;
}
/* in this code, we'll get a "Undefined reference to function1".Because function 1 is declared static in file ab.c and can't be used in ab1.c */
https://stackoverflow.com/questions/5319361
复制相似问题