1

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

4

2 回答 2

3

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

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

typedef void (*ftype)(void);

ftype getHidden(void);

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

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

ftype getHidden(void)
{
    return hidden;
}

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

于 2021-05-31T16:17:26.277 回答
0

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

于 2021-05-31T16:14:41.270 回答