11
As we can see in dirent.h, there is a typedef:
typedef struct __dirstream DIR;
It says it's opaque to users. And we can't find it even in gcc headers, the __dirstream structure definition can only be found in glibc source code. I am wondering why this structure has to be opaque (I don't think it's plausible to say it prevents user from direct reference, probably I am wrong)? What's the catch?