【发布时间】:2013-05-29 10:27:52
【问题描述】:
正如我们在dirent.h 中看到的,有一个typedef:
typedef struct __dirstream DIR;
它说它对用户是不透明的。而且我们甚至在 gcc 头文件中也找不到它,__dirstream 结构定义只能在 glibc 源代码中找到。我想知道为什么这个结构必须是不透明的(我认为说它阻止用户直接引用是不合理的,可能我错了)?有什么收获?
【问题讨论】:
-
它是不透明的,因此库的用户无法在其中随意查找值。
-
@H2CO3 但是如果你真的想要,你可以将 glibc 中的定义复制到你的程序中,它实际上并没有阻止任何事情。而且我认为隐藏结构以防止随意修改不是一个好主意,我认为在手册上告知用户就足够了。
-
你可以,当然没有什么可以阻止的,但是大多数用户甚至无法谷歌glibc的源代码在哪里:P 在编程中,没有什么是不可能的,这不是这样实现的因为如果你这样做,地球就会爆炸,这只是那一小块安全屏障,可以防止拿着枪的猴子在里面乱搞内部结构。
标签: c linux header directory posix