在研究MD5算法,发现它的头文件MD5.h有:
/* MD5 context. */
typedef struct {
UINT4 state[4]; /* state (ABCD) */
UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
unsigned char buffer[64]; /* input buffer */
} MD5_CTX;
void MD5Init PROTO_LIST ((MD5_CTX *));
void MD5Update PROTO_LIST ((MD5_CTX *, unsigned char *, unsigned int));
void MD5Final PROTO_LIST ((unsigned char [16], MD5_CTX *));
很奇怪它为什么要用两个括号包含参数,于是试着去掉外面那层括号,结果编译时提示:PROTO_LIST宏包含了太多参数。
我又在头文件中试着写了自己的函数:
void readMD5_16 (unsigned char *, unsigned char *, BOOL *);
void saveMD5_16 (unsigned char *, unsigned char *, BOOL);
提示这两个函数:error C2143: 语法错误 : 缺少“)”(在“(”的前面)。以为是没用两个括号于是又加了一层括号还是这个错误。最后去掉*号之前的空格才通过编译。