C语言中如何实现数据隐藏?

love1code 2017-03-18 10:26:09
第一个问题的例子:
比如我开发一个链表库,供别人使用,那么我如何才能让别人不能访问结构体的成员,而必须通过我写的函数来操作呢。我在网上找到了一种解决方法,就是将结构体定义在.c文件中,而函数的参数全部使用指针。但我不清楚为什么可以这样。

第二个例子:sqlite3的源代码中,有一些很奇怪的声明。
比如下面这个函数

SQLITE_PRIVATE sqlite3_mutex *sqlite3MallocMutex(void)
{
return mem0.mutex;
}


SQLITE_PRIVATE放在了函数返回类型的前面,这是个什么东西呢?他是什么作用。从名称上看,估计是起到隐藏API的作用,但是这个SQLITE_PRIVATE定义却找不到。。。
...全文
607 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-03-18
  • 打赏
  • 举报
回复
如果不让别人知道你内部的实现,那么你可以定义对外的函数接口,就是你的模块和外界模块的数据通信的接口; 你需要写函数接口,然后将你需要的参数通过调用你实现的函数接口来拿到;这个接口不一定非要用指针,如果使用结构体指针,你还得让别人的模块指导你的数据结构是什么; 对于是否使用指针,使用指针主要是调用一个函数接口,可以修改传进来的地址里的值,即这个参数是传入传出参数;就是传进来一个地址,经过你的函数处理带走处理后的结果;我估计传指针到你的函数,就是将处理的结果能够返回到调用的函数里。

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧