隐藏来自外部链接的结构变量

时间:2010-04-30 19:59:47

标签: c

您可以使用静态关键字隐藏给定文件外部的结构中的变量吗? 类似地,我们可以使用static关键字从给定文件外部隐藏全局变量吗? 如果是这样,请让我知道如何。 提前谢谢......

3 个答案:

答案 0 :(得分:4)

使用opaque数据类型,其中类型在标头中声明,但结构在实现中定义。这意味着包含头的任何代码都可以将指针传递给类型,但只有实现可以修改和处理结构包含的数据。

典型的例子是来自FILE的{​​{1}}。

有关详细信息,请参阅http://en.wikipedia.org/wiki/Opaque_pointer

答案 1 :(得分:1)

您可以使用static关键字从文件外部隐藏全局变量,但不能隐藏结构的子集或单个变量。

答案 2 :(得分:1)

通过静态键盘,您通常会将其设为私有功能。如果将它用于与函数相关的全局变量或局部变量,则会获得不可重入的代码。

我强烈建议您避免这种情况,因为在多线程环境中会给您带来麻烦。您也可能对多线程编程不感兴趣,但是您不知道将来需要什么!

关于你的具体问题,我完全赞同James Morris关于不透明指针的建议。