在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
關鍵字來實現模塊的封裝。