C语言中函数和数据在编译层面默认都是Public,但是我们可以通过利用C编译器的基本编译规则,实现C编译器对数据成员的封装 (即面向对象的数据成员封装)。基本的原理是:把数据结构的声明部分让main函数可见,然后把数据结构的定义部分让main函数不可见(即定义部分放到main函数之外的其他源文件中)。
例子一 (变量的定义部分放在main函数能直接访问的头文件/源文件,无法实现数据的封装): 举例而言,如果将结构体变量的声明和定义都放在main函数能直接访问的头文件/源文件,那么该结构体的内部数据成员是main函数能直接访问的。如下,
fun.h
#ifndef FUN_H
#define FUN_H
struct st{
int age;


