【问题标题】:Usage of static function [duplicate]静态函数的使用[重复]
【发布时间】:2021-05-31 16:13:05
【问题描述】:

我们知道静态函数不能被其他源文件访问,但是有没有办法在不使其全局的情况下从一个源文件到另一个源文件使用静态函数?

【问题讨论】:

  • #include "staticfuncfile.C"
  • @shrewmouse 请不要在没有进一步说明的情况下给出这样的建议。如果在不了解的情况下使用,这只会招致麻烦。
  • stackoverflow.com/questions/37442606/… 是关于 C++ 但这个概念也适用于这里

标签: c storage-class-specifier


【解决方案1】:

您可以通过从另一个函数返回的函数指针使该函数对其他翻译单元可用。

在头文件中,您将拥有以下内容:

typedef void (*ftype)(void);

ftype getHidden(void);

然后在一个源文件中,您将拥有:

static void hidden(void)
{
     printf("in hidden\n");
}

ftype getHidden(void)
{
    return hidden;
}

现在其他翻译单元可以调用getHidden来获取指向可以调用的静态函数的指针。

【讨论】:

  • 谢谢,我从你的回答中得到了一些想法。
  • @Aerie 很高兴我能帮上忙。如果您觉得有用,请随时 accept this answer
【解决方案2】:

不复制就不行。文件中的静态函数的全部目的是从其他文件中“隐藏”它,以避免名称空间冲突。

【讨论】:

  • 如果比较函数的标识符声明为staticqsort如何调用传递给它的比较函数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
相关资源
最近更新 更多