【发布时间】:2013-03-04 07:39:20
【问题描述】:
我正在编写一个 C(共享)库。它最初是一个单独的翻译单元,我可以在其中定义几个 static 全局变量,对外部模块隐藏。
现在库已经增长,我想将模块分成几个较小的源文件。问题是现在我对提到的全局变量有两个选择:
在每个源文件中都有私有副本,并通过函数调用以某种方式同步它们的值 - 这会很快变得非常丑陋。
删除
static定义,因此使用extern在所有翻译单元之间共享变量 - 但是现在链接到库的应用程序代码可以访问这些全局变量,如果在那里进行了所需的声明。
那么,有没有一种巧妙的方法让私有全局变量在多个特定翻译单元之间共享?
【问题讨论】:
标签: c linux global-variables shared-libraries private