静态函数的使用

问题描述

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

解决方法

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

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

typedef void (*ftype)(void);

ftype getHidden(void);

然后在您将拥有的源文件中:

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

ftype getHidden(void)
{
    return hidden;
}

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

,

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...