gpt4 book ai didi

c - 与 int 'int ()' 的间接级别不同

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:23 25 4
gpt4 key购买 nike

我正在构建一个链表,我正在尝试构建一个函数来添加一个节点,以测试我传递的名称和大小。

我想用我的头脑调用它,但我遇到了一些我无法调试的奇怪错误。

struct Test{
char name[_MAX_NAME];
int size;
struct Test *next;
};

typedef struct Test *node;

node AddNode(node head, char name, int size);

在我的主要

node head = NULL; // is this problem? 
head = AddNode(head,"Test Name",110);

Error C2040 'AddNode': 'node (node,char,int)' differs in levels of indirection from 'int ()'

最佳答案

考虑消息“‘node (node,char,int)’在间接级别上与‘int ()’不同”。在此消息中,int () 是从未声明函数时提供的默认声明获取非 C 标准编译器的类型。也就是说,当您在声明之前使用 AddNode 时,它会自动声明为 int AddNode()

然后,稍后在您的代码中,当您的 AddNode 声明出现时,您的声明与默认声明形成对比,并且编译器会打印此消息。

要解决此问题,请在使用前声明 AddNode。这样的声明必须出现在每个使用它的源文件中。 (实际上,声明必须出现在 C 翻译单元中,这意味着编译源文件时包含的所有文件。翻译单元包括 #include 中包含的头文件。您必须在源文件本身或其包含的文件中声明 AddNode。)

此外,您将 AddNode 声明为 node AddNode(node head, char name, int size); 但将 "Test Name" 传递给第二个参数。作为函数参数,"Test Name" 充当 char *,而不是 char,因此您可能希望将声明更改为 node AddNode(node head, char *name, int size);.

关于c - 与 int 'int ()' 的间接级别不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54273130/

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