我正在使用C.我有两个头文件(H1和H2),分别有两个不同的结构(S1和S2)。我试图在H1中定义一个带S1和&的函数。 S2作为其参数。我没有灵活性来移动头文件之间的结构。
功能(S1,S2);
但是如何将S2声明为此函数的第二个参数,因为它在H2而不是H1?
答案 0 :(得分:3)
您只需包含用于定义c文件中结构的头文件。
#include "H2.h"
答案 1 :(得分:2)
在H1,有:
#ifndef H1_INCLUDED
#define H1_INCLUDED
#include "H2"
extern ... your_function(S1 arg1, S2 arg2);
#endif
实际上,如果只需要结构指针,则不必在H2中包含H1;你可以简单地写一下:
#ifndef H1_INCLUDED
#define H1_INCLUDED
struct S2;
extern ... your_function(S1 *arg1, S2 *arg2);
#endif
struct S2;
行说“有一个带有标记S2
的结构类型,我不打算告诉你更多关于它的信息”。只要头文件中的代码不需要访问结构的成员就足够了,这很有可能,并且只要函数获取指向结构类型的指针而不是结构类型的实际副本。
另见: