【问题标题】:How to access a static variable from another file in C? [duplicate]如何从C中的另一个文件访问静态变量? [复制]
【发布时间】:2011-01-14 19:03:48
【问题描述】:

可能重复:
Static variable

如何从 C 中的另一个文件访问静态变量? 由于静态变量具有文件范围,我认为我们无法在文件之外访问它。但我仍然觉得可能有一些技巧或方法可以做到这一点。

【问题讨论】:

标签: c static-variables


【解决方案1】:

我认为没有简单的方法。如果您可以使用静态变量更改文件,则可以执行以下操作:

static int hiddenVar; // The static var you want to get at

// A new function you write
int * getHiddenVar() {
   return &hiddenVar;
}

当然,如果您可以更改文件,您只需删除 static 关键字。

另外,我怀疑这是否有帮助,但在 FreeBSD 中编写内核模块时,我不得不这样做。我使用了一个技巧,调用内核的链接器函数来查找静态函数的地址。不过,我怀疑你可以在普通的 C 程序中做到这一点。

【讨论】:

    【解决方案2】:

    在声明中使用extern 关键字来指定变量来自另一个文件(外部链接)。删除原始定义中的 static 关键字。

    解释了外部与内部链接的事情in this article

    【讨论】:

    • 嗯。什么?具有内部和外部链接的变量?
    • 我澄清了声明与定义部分。
    • 现在您的答案在技术上是正确的,但遗憾的是没有回答问题。不过这个问题本身并不是那么好。
    【解决方案3】:

    您只能间接执行此操作,例如如果包含静态变量的文件范围内的函数将指向它的指针传递给您。

    【讨论】:

      猜你喜欢
      • 2011-01-19
      • 2014-02-27
      • 2010-12-30
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 2013-04-02
      相关资源
      最近更新 更多