不知道C里面的sizeof是怎么实现的,我自己利用typeof实现一个sizeof,实现的宏为:
#define SIZEOF(val) ((size_t)((typeof(val) *)0+1))
测试代码:
#include<stdio.h>
#define SIZEOF(val) ((size_t)((typeof(val) *)0+1))
void main()
{
unsigned int a;
unsigned char b;
printf("SIZEOF(a) = %d,SIZEOF(b) = %d,SIZEOF(unsigned char) = %d,SIZEOF(unsigned int) = %d\n",
SIZEOF(a),SIZEOF(b),SIZEOF(unsigned char),SIZEOF(unsigned int));
}
O(∩_∩)O
输出结果为: