FILE Pointer
Eljay Love-Jensen
eljay@adobe.com
Tue May 27 16:23:00 GMT 2003
Hi Bharathi,
>The sizeof(FILE) is 148 & sizeof(void) is 1. Does it mean anything ?
It means the struct FILE is 148 bytes long. And sizeof(void) is probably
calculated as if sizeof(char) -- probably something in the standard about that.
They could have done...
struct FILE {
char opaque[148];
};
...and thus...
sizeof(FILE) == 148
What's the sizeof(FILE*) & sizeof(void*)?
After all, you don't "malloc(sizeof(FILE))" or "new FILE" in the use of a
FILE*. You just use the FILE* returned by the fopen.
>and System dependent lib only can process the file descriptor ?
Which is why fileno(fp) will tell you the file descriptor. Along with all
the other functions I listed, which are the accessors to the FILE structure
information.
>I try to pass a void ptr to the ftell(), then I got the compilation error
"invalid use of void expression".
FILE* fp = fopen("foo.txt", "r");
void* vp = fp;
size_t position = ftell((FILE*)vp); // Don't forget your cast.
>With out casting, How it found that, ptr is NOT a type FILE ?
I'm not sure why you'd need to care, but you can use GCC's C++ language
extensions to test for type-ness.
Sincerely,
--Eljay
More information about the Gcc-help
mailing list