Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数原型声明c_C_Function Prototypes - Fatal编程技术网

函数原型声明c

函数原型声明c,c,function-prototypes,C,Function Prototypes,今天我看到了表单的一个函数原型(为了完整性,添加了一些初始行) 这是L.Peter Deutsch的md5实现。据我所知,在原型中编写16没有任何意义。那么,为什么会包括在这里呢 这是否只是向程序员表明,无论传递给函数的指针或数组是什么,它都只考虑函数的前16个字节。这到底意味着什么。下面是托管在的实现的链接,实际上,它将衰减到 void md5_finish(md5_state_t*pms,md5_byte_t*digest) 16可能是对用户摘要使用的大小的提示,但从技术上讲,函数将接受参数

今天我看到了表单的一个函数原型(为了完整性,添加了一些初始行)

这是L.Peter Deutsch的md5实现。据我所知,在原型中编写
16
没有任何意义。那么,为什么会包括在这里呢


这是否只是向程序员表明,无论传递给函数的指针或数组是什么,它都只考虑函数的前16个字节。这到底意味着什么。下面是托管在

的实现的链接,实际上,它将衰减到

void md5_finish(md5_state_t*pms,md5_byte_t*digest)


16
可能是对用户摘要使用的大小的提示,但从技术上讲,函数将接受参数中的任何大小,除非函数中有代码检查特定大小。

仅适用于编译器
void md5_finish(md5_state_t*,md5_byte_t*)
就足够了,我知道这一点,但我只是好奇为什么要写
16
。这是某种编程实践吗???@AmandepGautam:一定是某种风格偏好,或者像我所说的那样,作为提示。@AmandepGautam:我看了代码。您可以将更大的数组传递到函数中,这并不重要。函数中的for循环最多只能运行16个字节,因此其余的将被忽略。这就是为什么我觉得这是一种很好的编程实践,表明数组中只需要128位(16字节),其余的就不重要了。我还发现了另一件事,如果您将大小不等于16的数组传递给此函数,编译器将向您发出警告。如果您将大小为16的数组传递给此函数,警告将消失。
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]);