不知道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
輸出結果爲: