c语言编程如何引用文件,C语言如何引用别的文件中的static函数

本文探讨了在C语言中如何实现不同源文件间的static函数调用,通过实例展示了如何通过创建包装函数来间接调用static函数,并提供了一种通过结构体指针成员指向static函数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

C如何引用别的文件中的static函数

如果是static函数呢?

缺点是我必须在haha中使用my_static,有时候你可能不想立即使用my_static

试验一下

这样就可以在主函数中随便啥时候调用my_static了

结论:你还得在static所在的文件里面搞点小动作才可以实现在别的文件里调用它。哎,苦哦!

C如何引用别的文件中的static函数

(1.cpp)

#include

#include "2.h"

void main()

{

my();

}

(2.cpp)

#include "2.h"

#include

void my()

{

printf("我是外边的的函数,我被调用了\n");

}

2.h头文件

void my();

上面的非常好,没问题。

如果是static函数呢?

(1.cpp)

#include

#include "2.h"

void main()

{

my_static();

}

(2.cpp)

#include "2.h"

#include

static void my_static()

{

printf("我是外边的的函数,我被调用了\n");

}

2.h头文件

static void my_static();

9ed31408f4729c04547fafe8787afbad.png

出错了。

怎么办呢????

(1.cpp)

#include

#include "2.h"

void main()

{

haha();

}

(2.cpp)

#include "2.h"

#include

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

#include "2.h"

void main()

{

struct stru stru1;

use_my_static(&stru1);

stru1.f();

}

(2.cpp)

#include "2.h"

#include

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所在的文件里面搞点小动作才可以实现在别的文件里调用它。哎,苦哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值