mr_size
mr_size定义在miracl.h
#define mr_size(n) (((sizeof(struct bigtype)+((n)+2)*sizeof(mr_utype))-1)/MR_SL+1)*MR_SL
函数功能:返回字节数。若struct bigtype类型数据占8个字节,long类型数据占8个字节,则总共申请个字节。
参数n:整型变量。
1. 函数分析
为实现mr_size,所需要的相关数据类型定义如下。
#define mr_utype int /* the underlying type is usually int, but see mrmuldv.any */
#ifdef MR_FP
typedef mr_utype mr_small;
#else
typedef unsigned mr_utype mr_small;
/* It might be wanted to change this to unsigned long */
typedef unsigned int mr_lentype;
struct bigtype
{
mr_lentype len;
mr_small *w;
};
typedef struct bigtype *big;
#define MR_SL sizeof(long)
mr_utype在mirdef.h定义,一般定义为int。
mr_small定义为mr_utype或者unsigned mr_utype,根据mr_utype的定义,一般为int或者unsigned int。
struct bigtype类型由mr_lentype和mr_small类型数据成员,一般情况下与下面的定义等价。big是struct bigtype *的别名。
struct bigtype
{
unsigned int len;
int *w;
};
MR_SL在miracl.h定义,计算long类型数据占用内存字节数。