【发布时间】:2010-07-08 10:13:38
【问题描述】:
我想知道如何保护静态变量或函数仅用于定义它的文件。我知道这些变量和函数是在数据部分(准确地说是堆区域)中声明的,但它是用文件名标记?假设我通过将这样的静态函数(在 foo.c 中定义)分配给全局函数指针,并在其他文件(bar.c)中调用该函数指针来愚弄编译器。显然我的代码不会给出任何编译警告,但顺便说一下,它给出了分段错误。显然,这是一个保护故障,但我有兴趣知道它是如何在系统内部实现的。
谢谢。女士
【问题讨论】:
-
通过函数指针调用另一个编译单元中的静态函数不应产生保护错误。发布您的代码。
-
当编译器实际上是为程序员提供的一种功能时,为什么还要欺骗编译器?