How to find the size of a variable without using sizeof
c, sizeof
Solution
You can use the following macro, taken from here:
#define sizeof_var( var ) ((size_t)(&(var)+1)-(size_t)(&(var)))
The idea is to use pointer arithmetic (`(&(var)+1)`) to determine the offset of the variable, and then subtract the original address of the variable, yielding its size. For example, if you have an `int16_t i` variable located at `0x0002`, you would be subtracting `0x0002` from `0x0006`, thereby obtaining `0x4` or 4 bytes.
However, I don't really see a valid reason not to use `sizeof`, but I'm sure you must have one.
Problem
Let us assume I have declared the variable 'i' of certain datatype (might be int, char, float or double) ... NOTE: Simply consider that 'i' is declared and dont bother if it is an int or char or float or double datatype. Since I want a generic solution I am simply mentioning that variable 'i' can be of any one of the datatypes namely int, char, float or double. Now can I find the size of the variable 'i' without sizeof operator?