"Ancient_Hacker" <gr**@comcast.netwrote:
Mallesh wrote:
Can anybody tell me how sizeof operator internally implemented. In my
project i want to implemnent my own sizeof operator function (like
mysizeof). How i can write the code? Please help me.
There are two major cases:
(1) You have a variable or type name and at *compile time* you need
the size of the variable or type. You can "sort of" get a number
that's loosely related to the size by trickery, but not recommended by
purists. Hint: macros can declare variables. Variables are often, but
not always, snuggled together in memory.
Then you're thinking of the wrong tricks.
If you have an object, you can, not sort of, but definitely, get the
size of that object in bytes, without resorting to any non-ISO or
system-dependent hacks. Hint: [1].
If you have a type, you can almost equally simply get the size of that
type, by declaring a single object of that type, and then resorting to
the previous trick. The real snag here will be that you will have to
find a variable name that is safe to declare in this macro. You can find
such an identifier with almost, but not quite, 100% certainty.
What you cannot do in ISO C is declare a macro which does both the
object case _and_ the type case. The preprocessor doesn't know the
difference between foo and foo, where the first foo was declared using
int foo; and the second using typedef int foo;.
But in general this question is better asked in some other group, this
group is for purists, and what you're asking is in no way "pure".
No, at compile-time, it can be done in pure ISO C. The real problem with
the question is: why? Nobody who has access to sizeof itself (and that
is everybody who uses ISO C) should need to fake it.
Richard