函数原型声明c

时间:2012-07-16 17:48:01

标签: c function-prototypes

今天我看到了表单的函数原型(添加了很少的初始行以保证完整性)

typedef unsigned char md5_byte_t; /* 8-bit byte */
typedef unsigned int md5_word_t; /* 32-bit word */
/* Define the state of the MD5 Algorithm. */
typedef struct md5_state_s {
    md5_word_t count[2];    /* message length in bits, lsw first */
    md5_word_t abcd[4];     /* digest buffer */
    md5_byte_t buf[64];     /* accumulate block */
} md5_state_t;

void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);

这已经从L. Peter Deutsch的 md5实施中获得。据我所知,在原型中写16没有任何意义。那么为什么它包括在这里

这只是程序员的一个指示,无论你传递给函数的指针或数组是什么,它只会考虑它的前16个字节。这实际上意味着什么。这是github

托管实施的链接

1 个答案:

答案 0 :(得分:7)

在实践中,它会腐烂到

void md5_finish(md5_state_t *pms, md5_byte_t *digest);

16可能是用于向用户提供摘要的大小的提示,但该功能在技术上将接受参数中的任何大小,除非函数中有代码来检查特定大小

相关问题