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

J·多伊

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

好的,所以我通过使用来保护我的标题

#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声明了它所在作用域的结构名称。如果第一次提及是作为顶级声明,则该名称对文件的其余部分仍然有效。如果它在函数定义中,则名称仅在编译此函数时才有效。如果它在函数原型中,则名称仅对原型本身有效,这是没有意义的,因为您将无法使用相同的结构将参数传递给函数或函数的定义.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在“ C”头文件中声明的静态函数

C ++中带有指针参数的函数

错误:函数类型冲突,函数在头文件中声明

为什么在头文件的函数声明中,对于通过值传递的参数而言,const是不必要的?

如何控制CMake中头文件的位置?

在C ++(类)中,是否总是需要在头文件中声明函数?

显示C中头文件的更改定义

在struct中带有struct参数的函数指针

C ++头文件中的静态函数

为什么CodeBlocks编译器无法识别我在C的头文件中声明的函数?

如何在C#中声明带有可选参数的函数

应该将以== default声明的函数仅放在头文件中

头文件中的C函数实现

如何在头文件中声明C数组?

函数声明顺序在头文件中是否重要?

如何在一个文件中声明并从另一个文件中调用的参数中编程带有PHP的可重用函数?

C ++-在头文件中使用带有可变参数的多维数组

如何在一个以上的源文件中包括在头文件中声明的struct变量?

C-调用带有参数且没有参数的声明的函数吗?

如果我没有在头文件中声明所有函数,会发生什么?

头文件C ++中的声明和初始化太多

C 程序中带有默认参数的 C++ 头文件

奇怪的C++头文件函数声明

c 编程中头文件的功能(工作)是什么?

在打字文件中声明带有空格的函数

如何使用在多个头文件中声明的函数

在没有默认构造函数的情况下实例化头文件中声明的变量

为 C++ 头文件中的类属性声明而苦恼?

如何在头文件中声明具有未知参数数据类型的函数?