在C语言中,可以通过将模块的接口函数声明为static
,然后在模块内部定义一个包含这些接口函数的结构体,并将其指针暴露给外部,从而实现模块的封装。
例如,假设有一个名为module.c
的模块,其中定义了一些接口函数如下:
static int add(int a, int b) { return a + b; } static int subtract(int a, int b) { return a - b; } // 定义模块结构体 struct Module { int (*add)(int a, int b); int (*subtract)(int a, int b); }; // 暴露模块接口 struct Module module = { .add = add, .subtract = subtract };
然后,在module.h
中对外部接口进行声明,可以使用extern
关键字将module
结构体指针暴露给外部:
// module.h extern struct Module module;
最后,在需要使用模块的地方,可以通过引入module.h
头文件来访问模块的接口函数:
#include "module.h" int main() { int result1 = module.add(10, 5); int result2 = module.subtract(10, 5); return 0; }
这样就实现了在C语言中通过export
关键字来实现模块的封装。