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?
You can use the following macro, taken from here:
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 anint16_t ivariable located at0x0002, you would be subtracting0x0002from0x0006, thereby obtaining0x4or 4 bytes.However, I don’t really see a valid reason not to use
sizeof, but I’m sure you must have one.