cpp用函数实现sizeof操作符的功能

#include "stdafx.h"
#include <stdlib.h>

using namespace std;

template<class ToT>
int getTypeSize(ToT *t,int len=1);

#define GET_TYPE_LEN(TYPE_NAME) getTypeSize(new TYPE_NAME());

struct MM{
	int m1;
	char m2;
	long m3;
	char* m4;
};

int _tmain(int argc, _TCHAR* argv[])
{
	struct MM mm;
	int nLen1 = getTypeSize(&mm);
	int nLen2 = GET_TYPE_LEN(MM); 

	return 0;
}

template<class ToT>
int getTypeSize(ToT *t, int len)
{
	return((char *)(t+1)-(char *)t)*len;
}

这种实现,有几个问题:
1、区分是类型还是变量,暂时没有找到好的办法
2、对于数组,暂时没有好的方法处理
3、为简化处理,要求输入为指针

One Reply to “cpp用函数实现sizeof操作符的功能”

Leave a Reply

Your email address will not be published. Required fields are marked *

*