typedef unsigned char byte;
typedef unsigned short word16;
typedef unsigned int dword32;byte inline _msb_n(word16& x)
{ int t=x>>15;return x<<=1,t;}
byte inline _msb(dword32& x,byte& y)
{ int t=x>>31,s=(y==0xff?0:1);y-=s,x<<=s;return t;}
byte inline _msb(word16& x,byte& y,int n=0)
{ int t=x>>15,s=(y==0xff?0:1);y-=s,x<<=s;return t;}
void inline _xchg(byte& x,byte& y)
{ byte z=x;x=y;y=z; }
dword32 inline _shld(dword32& x,dword32& y,int n)
{
for(int i=0;i<n;i++)
{ x<<=1;
x+=_msb(y,_ch);
}
int t=x;
return t;
}
dword32 inline _shld(word16& x,dword32& y,int n)
{
for(int i=0;i<n;i++)
{ x<<=1;
x+=_msb(y,_ch);
}
int t=x;
return t;
}
void inline _repzmovsb(byte* dst,word16& di,byte* src, word16& si,word16& num)
{
while(num--)
dst[di++]=src[si++];
}

解决方案 »

  1.   

    1.指针可以转化为数组来解决
    2.引用的问题,你可以写一个继承java.lang.Short的自定义类,在这个自定义类中实现移位操作与加减操作,用这个类代替dword16& 应该可以解决.
    写一个继承java.lang.Integer的自定义类,在这个自定义类中实现移位操作与加减操作,用这个类代替dword32& 应该可以解决.
    java的int的用法与c基本是一样的。
    在java中如果方法的参数是对象的话,传入的就是这个对象引用的拷贝
      

  2.   

    看来问题是这样了,如果不想改方法,就得申明全局变量,每一次调用这个函数都有可能需要一个全局变量,如果要想在多个类中共用,得用多少个static啊
    如果要改成类,方法就得改为类的方法,
    总之,代码的大改是跑不了的,唉~~~~~~~~~~~~