gpt4 book ai didi

C函数原型(prototype)编译错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:27 26 4
gpt4 key购买 nike

我是一名新手程序员,我希望得到一些帮助来解释为什么以下一个非常简单的哈希函数的实现会返回编译错误:

#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>

#define LENGTH 45

int hash(char word[LENGTH+1]);

int main(void)
{
char word[LENGTH+1];
strcpy(word, "HelloWorld");

//print out hash
int hash = hash(word);
// = ( ( (int) word[1] * (int) word[2]) % 1000 );

printf("%i\n", hash);

return 0;
}

int hash(char word[LENGTH+1])
{
int hash = ( ( (int) word[1] * (int) word[2]) % 1000 );
return hash;
}

编译器返回信息:

test3.c:25:24: error: called object type 'int' is not a function or function pointer

简单地在 main 中以一行代码而不是原型(prototype)函数的形式执行我的哈希函数就足够容易了,但如果有人能解释为什么这不起作用,我将不胜感激。

最佳答案

您声明了一个与函数同名的变量:

int hash = hash(word);

变量和函数在 C 中位于同一个命名空间中,因此声明变量会隐藏函数。因此,当编译器看到 hash(word) 时,它会提示您正在尝试将 int 用作函数。

为其中之一使用不同的名称。

int hashcode = hash(word);

关于C函数原型(prototype)编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41687584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com