那就不用宏啦,手工把代码替换一下。宏说白了就是替换。

解决方案 »

  1.   

    >>>>c 的宏定义a,b,c,d的值都会改变,而c#只改变a,c.我不明白为什么 c 的宏定义下b,d的值要改变 c#只改变a,c----因为加了ref修饰,b,d没有(于是发生值传递)
     c的宏定义只是做一个简单的替换工作,比如:你定义了
    #define f_rnd(i,a,b,c,d)                    
    u = rotl(d * (d + d + 1), 5);       
    t = rotl(b * (b + b + 1), 5);       
    a = rotl(a ^ t, u) + l_key[i];      
    c = rotl(c ^ u, t) + l_key[i + 1]那么程序中一旦遇到f_rnd(i,a,b,c,d)形式就会替换为你下面的形式.这和函数不同