【发布时间】:2013-10-26 15:22:55
【问题描述】:
我正在使用 C。我有两个头文件(H1 和 H2),分别具有两个不同的结构(S1 和 S2)。我试图在 H1 中定义一个以 S1 和 S2 作为其参数的函数。我没有在头文件之间移动结构的灵活性。
函数(S1,S2);
但是如何将 S2 声明为该函数的第二个参数,因为它在 H2 而不是 H1 中?
【问题讨论】:
-
in H1.h #include "H2.h"
我正在使用 C。我有两个头文件(H1 和 H2),分别具有两个不同的结构(S1 和 S2)。我试图在 H1 中定义一个以 S1 和 S2 作为其参数的函数。我没有在头文件之间移动结构的灵活性。
函数(S1,S2);
但是如何将 S2 声明为该函数的第二个参数,因为它在 H2 而不是 H1 中?
【问题讨论】:
您只需在 c 文件中包含定义结构的头文件。
#include "H2.h"
【讨论】:
在 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 的结构类型,我不会告诉你更多关于它的信息”。只要标头中的代码不需要访问结构的成员就足够了,这很有可能,只要函数采用指向结构类型的指针而不是结构类型的实际副本。
另见:
【讨论】: