可以使用如下两个宏定义实现类似sizeof的功能
//针对T为一个类型名的情况
#define _sizeof_type(T) (size_t)((T*)0 + 1)
//针对T为一个变量或者数组名的情况
#define _sizeof(T) ((size_t)(&T + 1) - (size_t)(&T))
测试代码
#include <stdio.h>
#define _sizeof_type(T) (size_t)((T*)0 + 1)
#define _sizeof(T) ((size_t)(&T+1)-(size_t)(&T))
int main()
{
int a = 3;
int *pa = &a;