正如我们所知,静态函数不能被其他源文件访问,但有没有办法在不使其全局化的情况下从一个源文件到另一个源文档使用静态函数?
您可以通过从另一个函数返回的函数指针使该函数可用于其他翻译单元。
在头文件中,您会有以下内容:
typedef void (*ftype)(void);
ftype getHidden(void);
然后在一个souce文件中,你会有:
static void hidden(void)
{
printf("in hiddenn");
}
ftype getHidden(void)
{
return hidden;
}
现在,其他翻译单元可以调用getHidden
来获取指向可以调用的静态函数的指针。
如果不复制它。文件中静态函数的全部目的是"隐藏";它来自其他文件,因此可以避免名称空间冲突。