The definition of struct _IO_FILE seems to be inside `bits/types/struct_FILE.h`, and goes like this:
struct _IO_FILE
{
int _flags;
...
so I suppose this means it's indeed expanded somewhere and, thus, not opaque?