gpt4 book ai didi

c - 如何保护静态函数/变量

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:58 29 4
gpt4 key购买 nike

我想知道静态变量或函数是如何被保护的,只能用于定义它的文件。我知道这些变量和函数是在数据部分(准确地说是堆区域)中声明的,但是它是用文件名标记?假设我通过将这样一个静态函数(在 foo.c 中定义)分配给一个全局函数指针来愚弄编译器,并在其他文件(bar.c)中调用该函数指针。显然我的代码不会给出任何编译警告,但顺便说一句,它给出了段错误。很明显,这是一个保护错误,但我很想知道它在系统内部是如何实现的。

谢谢。女士

最佳答案

链接器负责限制将函数名称映射到函数的范围。

没有对函数指针调用的静态函数的保护——这不是一个不常见的习语。例如,推荐的实现 GObject 方法的方法是公开一个指向静态函数的指针(请参阅此 GObject how-to 中的虚拟公共(public)方法部分)

关于c - 如何保护静态函数/变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3202566/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com