468,509 Members | 1,272 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,509 developers. It's quick & easy.

How to implement sizeof operator

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.

Aug 23 '06 #1
8 7253
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.
Look back through this group's archives, this has been asked before.

--
Ian Collins.
Aug 23 '06 #2
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.
It's implemented the same way the `(int)' operator
is implemented: By the compiler.

--
Eric Sosman
es*****@acm-dot-org.invalid
Aug 23 '06 #3
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.
Look at the Type* typ(int et, Type *d); function at,
http://cm.bell-labs.com/sources/plan...c/cmd/cc/sub.c

It distributes the size of types based on an array , ewidth[et],
which is just a table for the various sizes of types for the
current platform and assigns that to the type..

(Ofcourse you must have some way of deducing the type of
operands and expressions, this code is part of Ken Thompsons
C compiler. C compilers are good at doing just that.)
Aug 23 '06 #4
Mallesh wrote:
>
Can anybody tell me how sizeof operator internally implemented.
"Magic".

Since it is the compiler that determines the layout and size of any
type (whether built-in, or user-defined), it knows the exact size of
any and all types.
In my
project i want to implemnent my own sizeof operator function (like
mysizeof).
Why? Is there some reason, aside from "my instructor told me to",
to not use the sizeof operator, which was designed specifically for
this purpose?
How i can write the code? Please help me.
This comes up every now and then in this group. (Perhaps the
teacher assigns this "problem" several times a year?) Check the
archives for numerous "solutions".

--
+-------------------------+--------------------+-----------------------+
| Kenneth J. Brody | www.hvcomputer.com | #include |
| kenbrody/at\spamcop.net | www.fptech.com | <std_disclaimer.h|
+-------------------------+--------------------+-----------------------+
Don't e-mail me at: <mailto:Th*************@gmail.com>
Aug 23 '06 #5

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.

(2) You are passed an arbitrary variable address at *run time* and you
want to find the size of the variable. Not doable except in very
special circumstances, such as the variable was allocated by malloc()
and you have a malloc() hook.

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".

Aug 23 '06 #6
Ancient_Hacker wrote:
>
Mallesh wrote:
Can anybody tell me how sizeof operator internally implemented.
(2) You are passed an arbitrary variable address at
*run time* and you
want to find the size of the variable. Not doable except in very
special circumstances, such as the variable was allocated by malloc()
and you have a malloc() hook.
If you had an operation that could tell you
how many bytes were allocated for an object by malloc,
then that operation wouldn't be doing what sizeof does,
because sizeof can't do that.
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".
--
pete
Aug 24 '06 #7
"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
Aug 24 '06 #8

Nils O. Selåsdal wrote:
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.

Look at the Type* typ(int et, Type *d); function at,
http://cm.bell-labs.com/sources/plan...c/cmd/cc/sub.c

It distributes the size of types based on an array , ewidth[et],
which is just a table for the various sizes of types for the
current platform and assigns that to the type..

(Ofcourse you must have some way of deducing the type of
operands and expressions, this code is part of Ken Thompsons
C compiler. C compilers are good at doing just that.)
Thanks
Nils O. Selåsdal

Aug 24 '06 #9

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by dharmesh Gupta | last post: by
5 posts views Thread by Aloo | last post: by
12 posts views Thread by Christopher Pragash | last post: by
12 posts views Thread by ozbear | last post: by
12 posts views Thread by sonu | last post: by
32 posts views Thread by Abhishek Srivastava | last post: by
4 posts views Thread by vijay | last post: by
reply views Thread by NPC403 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.