gpt4 book ai didi

c - C中头文件中带有struct参数的函数声明

转载 作者:太空宇宙 更新时间:2023-11-04 04:18:30 24 4
gpt4 key购买 nike

我的老师的话“创建一个头文件并将所有函数声明放在你的 .c 文件中。还将你的结构和宏放在头文件中。确保“保护”此文件不被多次包含"

好的,所以我使用

来保护我的 header
#ifndef List_h
#define List_h
//My header code
#endif

我已将所有结构放入此头文件并将其包含在我的 .c 文件中,一切似乎都运行良好。我不使用任何宏,所以我没有。当我尝试做我的函数声明时,问题就来了。这是我的函数的样子:

int FunctionName(struct NameOfStruct *PointerToStruct){
//Code here
}

然后我尝试像这样在头文件中声明我的函数:

int FunctionName(struct);

但是得到一个错误“'struct NameOfStruct'的声明在这个函数之外是不可见的”

我试过:

int FunctionName(struct NameOfStruct *PointerToStruct);

但得到同样的错误。我应该如何在头文件中声明一个函数?我在谷歌上发现的任何东西似乎都不起作用。我做错了什么?

最佳答案

您需要在函数声明 之前定义(或至少声明)struct NameOfStruct

struct NameOfStrunct {

};
int FunctionName(struct NameOfStruct *PointerToStruct);

顺序很重要。错误消息的解释是,第一次提到 struct NameOfStruct 声明了它所在范围的结构名称。如果第一次提及是作为顶级声明,则该名称对文件的其余部分仍然有效。如果它在函数定义内,则名称仅在编译此函数时保持有效。如果它在函数原型(prototype)中,则名称仅对原型(prototype)本身有效,这没有意义,因为您将无法使用相同的结构将参数传递给函数或在函数的定义中.

关于c - C中头文件中带有struct参数的函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49317635/

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