C库中结构体的封装方法
当我们编写C语言库时,如果定义了某个结构体,并且库的使用者需要使用到这个结构体,但我们又不希望结构体的结构暴露在外,可以采用如下方式:1.在.c文件中定义结构体2.头文件中使用typedef为这个结构体定义别的名称。这样库的使用者只需使用这个别名,而无需(也无法)知道结构体成员有哪些。上面讲的有点绕,给个示意图。
在使用openssl的库的时候可以看到这种用法
我们只能定义指向EVP_CIPHER_CTX的指针,而不能定义该结构体变量,否则会提示“不允许使用不完整的类型”