我的老师说“创建一个头文件并将所有函数的函数声明放在你的 .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] 删除。
我来说两句