我想知道如何保护静态变量或函数,使其仅用于在中定义的文件我知道这样的变量和函数是在数据段(确切地说是堆区域)中声明的,但是它是用文件名标记的吗假设我把这样一个静态函数(在foo.c中定义)赋给一个全局函数指针,并在另一个文件(bar.c)中调用该函数指针,从而愚弄了编译器。显然,我的代码不会给出任何编译警告,但顺便说一下,它会给出分段错误显然,这是一个保护故障,但我想知道它是如何在系统内部实现的。
谢谢。质谱
最佳答案
static的目的不是“保护”变量/函数,而是保护名称空间,并保护程序的其他部分不受名称冲突的符号的干扰。它还允许更好的优化,因为编译器知道它不必方便外部模块访问符号名。
关于c - 静态功能/变量如何受到保护,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3202566/