1、结构体全元素隐藏
首先C没有private这样的关键字,所以无法像这样做,那么就要想C语言的特点,比如对外接口一般都是头文件加动态库,你只能看到头文件的内容,无法直接读函数的实现,所以这点就可以利用
// .h
typedef struct segment_s *segment_handle_t;
segment_handle_t create_segment();
// .c
struct segment_s {
};
// 即头文件声明,源文件编写结构体的元素,这样就无法直接访问到
2、结构体部分元素隐藏
同样利用上面的特点
// .c
struct segment_private_s {
};
// .h
struct segment_s {
...
char _private[sizeof(segment_private_s)];
// 这里sizeof无法使用(报错:不允许使用不完整的类型),必须填写具体数字
};
//