C语言如何引用别的文件中的static函数
(1.cpp)#include <stdio.h>#include "2.h"void main(){my();}(2.cpp)#include "2.h"#include <stdio.h>voidmy(){printf("我是外边的的函数,我被调用了\n");}2.h头文件void my();上面的非常好,没问题。如果是s...
文章目录
C如何引用别的文件中的static函数
(1.cpp)
#include <stdio.h>
#include "2.h"
void main()
{
my();
}
(2.cpp)
#include "2.h"
#include <stdio.h>
void my()
{
printf("我是外边的的函数,我被调用了\n");
}
2.h头文件
void my();
上面的非常好,没问题。
如果是static函数呢?
(1.cpp)
#include <stdio.h>
#include "2.h"
void main()
{
my_static();
}
(2.cpp)
#include "2.h"
#include <stdio.h>
static void my_static()
{
printf("我是外边的的函数,我被调用了\n");
}
2.h头文件
static void my_static();
出错了。
怎么办呢????
(1.cpp)
#include <stdio.h>
#include "2.h"
void main()
{
haha();
}
(2.cpp)
#include "2.h"
#include <stdio.h>
static void my_static()
{
printf("我是外边的static的函数,我被调用了\n");
}
void haha()
{
my_static();
};
2.h头文件
static void my_static();
void haha();
很勉强??????
缺点是我必须在haha中使用my_static,有时候你可能不想立即使用my_static
============================================================================================================================================================================================================================================================================================================================================================================
nodeNestloop.c文件中定义了
static TupleTableSlot *
ExecNestLoop(PlanState *pstate)
但是在
NestLoopState *
ExecInitNestLoop(NestLoop *node, EState *estate, int eflags)
中选用了
NestLoopState *nlstate;
/* check for unsupported flags */
Assert(!(eflags & (EXEC_FLAG_BACKWARD | EXEC_FLAG_MARK)));
NL1_printf("ExecInitNestLoop: %s\n",
"initializing node");
/*
* create state structure
*/
nlstate = makeNode(NestLoopState);
nlstate->js.ps.plan = (Plan *) node;
nlstate->js.ps.state = estate;
nlstate->js.ps.ExecProcNode = ExecNestLoop;
这样就似乎可以在外部调用了这个文件。
/
/
/
/
/
试验一下
(1.cpp)
#include <stdio.h>
#include "2.h"
void main()
{
struct stru stru1;
use_my_static(&stru1);
stru1.f();
}
(2.cpp)
#include "2.h"
#include <stdio.h>
static void my_static()
{
printf("我是外边的static的函数,我被调用了\n");
}
void use_my_static(struct stru *h)
{
h->f=my_static;
};//作用要知道哦
2.h头文件
static void my_static();
struct stru{
void (*f)();
};
void use_my_static(struct stru *h);
这样就可以在主函数中随便啥时候调用my_static了
结论:你还得在static所在的文件里面搞点小动作才可以实现在别的文件里调用它。哎,苦哦!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)