第一个问题的例子:
比如我开发一个链表库,供别人使用,那么我如何才能让别人不能访问结构体的成员,而必须通过我写的函数来操作呢。我在网上找到了一种解决方法,就是将结构体定义在.c文件中,而函数的参数全部使用指针。但我不清楚为什么可以这样。
第二个例子:sqlite3的源代码中,有一些很奇怪的声明。
比如下面这个函数
SQLITE_PRIVATE sqlite3_mutex *sqlite3MallocMutex(void)
{
return mem0.mutex;
}
SQLITE_PRIVATE放在了函数返回类型的前面,这是个什么东西呢?他是什么作用。从名称上看,估计是起到隐藏API的作用,但是这个SQLITE_PRIVATE定义却找不到。。。