首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

MD5源码中的奇怪语法,求解!该如何解决

2012-04-03 
MD5源码中的奇怪语法,求解!MD5.c里面有这样的代码staticuint32getu32(addr)constunsignedchar*addr{retur

MD5源码中的奇怪语法,求解!
MD5.c   里面有这样的代码
static   uint32  
getu32   (addr)
          const   unsigned   char   *addr;
{
return   (((((unsigned   long)addr[3]   < <   8)   |   addr[2])   < <   8)
|   addr[1])   < <   8   |   addr[0];
}

static   void
putu32   (data,   addr)
          uint32   data;
          unsigned   char   *addr;
{
addr[0]   =   (unsigned   char)data;
addr[1]   =   (unsigned   char)(data   > >   8);
addr[2]   =   (unsigned   char)(data   > >   16);
addr[3]   =   (unsigned   char)(data   > >   24);
}

他那个getu32,   putu32   是定义的宏还是函数啊,用C编译没问题,改用C++就报错。
高人解释下。


[解决办法]
是函数。
函数中的参数申明,写在函数的()与{}之间,这是比较老的C语法,ansi后来摈弃了这种声明方式。不过出于兼容,一般的C编译器,仍然会接受这种写法。但是C++中函数的参数声明必须写在调用列表中,也就是在()内,不能写在()与{}之间。
[解决办法]
赞同al0n9的说法.
很多比较经典的源代码都是用这种方式写的.
扩展名用.c一般就没有什么问题.


[解决办法]
老版本的 C语言教程上就可以看得到....例如 八九十年代的,呵呵。

热点排行