Mns*_*ghl 1 c static
我想知道静态变量或函数如何被保护以仅用于它所定义的文件.我知道这些变量和函数是在数据部分中声明的(堆区域是精确的),但是它被标记为文件名 ?假设我通过将这样的静态函数(在foo.c中定义)分配给全局函数指针来愚弄编译器,并在其他文件(bar.c)中调用该函数指针.显然我的代码不会给出任何编译警告,但顺便提一下,它会给出分段错误.显然,这是一个保护错误,但我很想知道它是如何在系统内部实现的.
谢谢.女士
Pet*_*ham 5
链接器负责限制将函数名称映射到函数的范围.
函数指针调用的静态函数没有保护 - 这不是一个不常见的习语.例如,推荐的实现GObject方法的方法是公开一个指向静态函数的指针(参见本GObject方法中的虚拟公共方法部分)
归档时间:
15 年,4 月 前
查看次数:
515 次
最近记录: